Задача
По определённому адресу вывести список тегов, а так же число материалов помеченных каждым тегом:
Решение
В папке site/all/modules
создаём новую папку taglist
, и уже в ней создаём файл taglist.info
с содержимым:
name = Tag List
description = Page with a list of tags
version = 6.x-1.0
core = 6.x
Подробнее про файлы с расширением .info можно почитать в прошлых уроках.
В этой же папке создаём файл taglist.module
с содержимым:
<?php
/**
* @file
* Tag List
*/
Весь php код будет добавляться в конец этого файла.
С помощью хука hook_menu() регистрируем адрес, по которому будет выводится список тегов — в taglist.module
добавляем:
/**
* Реализация hook_menu()
*/
function taglist_menu() {
$items['tags'] = array(
'title' => 'Список тегов', // заголовок страницы
'page callback' => 'taglist_page_tags', // функция, которая будет генерировать контент страницы (список тегов)
'access arguments' => array('access content'), // страницу смогут читать пользователи с правами на чтение нод
);
return $items;
}
В функции taglist_page_tags()
генерируем список:
/**
* Menu callback
*/
function taglist_page_tags() {
$vid = 1; // номер словаря, посмотреть можно на странице admin/content/taxonomy/list
$items = array();
$page = '';
$terms = db_query("
SELECT tid, name, (
SELECT COUNT(*) FROM {term_node} tn
LEFT JOIN {node} n ON tn.nid = n.nid
WHERE tn.tid = td.tid AND n.status = 1
) node_count FROM {term_data} td
WHERE vid = %d
ORDER BY name
", $vid);
while ($term = db_fetch_array($terms)) {
$items[] = l($term['name'], 'taxonomy/term/' . $term['tid']) . ' (' . $term['node_count'] . ')';
}
$page .= theme('item_list', $items, 'Список тегов', 'ul');
return $page;
}
Включаем модуль Tag List на странице управления модулями (admin/build/menu
).
Всё. Теперь по адресу http://yoursite.ru/tags будет открываться страница со списком тегов (терминов) из словаря $vid
.
Ссылки
Написанное актуально для
Drupal 6.x
Комментарии
Вы не могли бы пояснить эту строчку: "С помощью хука hook_menu() регистрируем адрес, по которому будет выводится список тегов". Что конкретно нужно сделать? Буду очень признательна.
скопировать код, который идёт ниже этой строчки
Спасибо.
Доброго времени суток. Не могли бы Вы объяснить начинающему разработкику реализацию вывода ключевиков данной страницы как на Вашем сайте вверху страницы после фразы "Опубликовано в Пнд, 08/03/2010 - 20:24"?
И еще, может ли быть применен написанный в этой статье материал для седьмого друпала?
Заранее спасибо.
Разобрался сам :) Спасибо Вам за статью.
Добавить комментарий