Главная Новости

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

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

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

[Drupal 6] Урок 10. Создание опросов и страницы "Обратная связь" с помощью модуля Webform.

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


Пишем модуль Drupal 7, hook_menu - Видеоуроки по Drupal

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


Создание гризонтального меню. Drupal 7 модуль superfish

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

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

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