Hook_menu drupal создание страниц через модуль

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

видео Hook_menu drupal создание страниц через модуль

Drupal 7: Правила

В прошлом уроке мы рассмотрели как выводить информацию из БД с помощью API Drupal ,  а именно с помощью хуков hook_block_info() , hook_block_view() . В этом уроке мы будем выводить страницы, а точнее с помощью хука hook_menu, подключать страницу к другим частям друпала: меню, модулю перевода, шаблонам и т.д.



Начнем с простого, подключим страницу с выводом названий последних 10 новостей и их описанием. Получится у нас небольшая лента новостей. Использовать будем мы хук hook_menu() . Ниже его описание, а после описания начнем его использовать.

Определяет пункт меню и возвращает страницу.


Структура папок Drupal, установка своих модулей и тем

Этот хук вызванный в модуле регистрирует путь в том порядке каком он будет обработан Друпалом. Пути могут быть зарегистрированы только для обработки или они могут быть размещены в меню, например в меню навигации. Пути и связанная с ними информация называется menu router item. Этот хук редко вызывается (например когда включается модуль) и его результат кешируется в базе данных. Поэтому постоянно приходится чистить кеш, при изменение хука в модуле.


Типы материалов и поля в Drupal 7 - Видеоуроки по Drupal

hook_menu() реализует возвращение ассоциативного массива, ключи которого определяют пути и значения которого ассоциативный массив свойств каждого их путей. (В результате получается лист свойств описываемых ниже)

Определение для каждого пути включает возвращаемую страницу, которая подключается когда регистрируемая страница запрошена. Если нет других запрашиваемых путей, которые должны отвечать на URL, то хук возвращает страницу. Например ваш модуль может зарегистрировать путь 'абв/где'.

<?php function mymodule_menu() { $items['abc/def'] = array( 'page callback' => 'mymodule_abc_view', ); return $items; } function mymodule_abc_view($ghi = 0, $jkl = '') { // ... } ?>

Когда путь 'абв/где' будет запрошен и дальше не будет ничего написано в URL, то и дополнительных аргументов передаваться не будет. Когда будет запрошен путь 'абв/где/1/Омск', то на страницу будет переданы аргументы "1" и "Омск". Это нам очень пригодится, когда мы будем создавать шаблоны страниц.

rss