Drupal → Архив со списком всех материалов, сгруппированных по месяцам, без помощи Views
В прошлом посте был создан архив материалов с помощью Views. В этом же покажу как можно сделать тоже самое на голом Drupal API:
/** * Реализация hook_menu() */ function mymodule_menu() { $items['archive'] = array( 'title' => 'Archive', 'page callback' => 'mymodule_archive_page', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } /** * Page callback */ function mymodule_archive_page() { // получаем список всех материалов $nodes = db_query(" SELECT n.nid, n.title, n.created, ncs.comment_count FROM {node} n LEFT JOIN {node_comment_statistics} ncs ON n.nid = ncs.nid WHERE n.status = 1 ORDER BY n.created DESC "); $groupedNodes = array(); $output = ''; // группируем по месяцу создания while ($node = db_fetch_object($nodes)) { $groupedNodes[format_date($node->created, 'custom', 'Y, F')][] = l($node->title, 'node/' . $node->nid) . ' (' . $node->comment_count . ')'; } // выводим сгруппированный список foreach ($groupedNodes as $date => $nodesForMonths) { $output .= theme('item_list', $nodesForMonths, $date); } return $output; }
В отличии от Views, работает довольно шустро и без кэширования.
Комментарии
для полноты картины, есть еще такой модуль: http://drupal.org/project/archive
И куда этот текст вставлять? Добавить блок и назначить формат ввода php не работает
http://xandeadx.ru/blog/drupal/256
хорошее название статьи))) спасибо
НА друпал 7 у вас кода нет?
Оставить комментарий