Drupal → Пишем модуль для вывода списка тегов

08.03.2010

Задача

По определённому адресу вывести список тегов, а так же число материалов помеченных каждым тегом:

Пример страницы созданной модулем taglist

Решение

В папке 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() регистрируем адрес, по которому будет выводится список тегов". Что конкретно нужно сделать? Буду очень признательна.

скопировать код, который идёт ниже этой строчки

Гость
06.04.2012, 16:31

Доброго времени суток. Не могли бы Вы объяснить начинающему разработкику реализацию вывода ключевиков данной страницы как на Вашем сайте вверху страницы после фразы "Опубликовано в Пнд, 08/03/2010 - 20:24"?
И еще, может ли быть применен написанный в этой статье материал для седьмого друпала?
Заранее спасибо.

Гость
08.04.2012, 02:26

Разобрался сам :) Спасибо Вам за статью.

Добавить комментарий