xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Задача

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

Пример страницы созданной модулем 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
Похожие записи

Комментарии RSS

Вы не могли бы пояснить эту строчку: "С помощью хука hook_menu() регистрируем адрес, по которому будет выводится список тегов". Что конкретно нужно сделать? Буду очень признательна.

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

Спасибо.

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании