hook_menu
- Drupal 5
- Drupal 6
developer/hooks/core.php, строка 1076
- Версии
- 5
hook_menu(
$may_cache)- 6
hook_menu()
Определяет пункты меню и обратный вызов страниц.
Этот хук разрешает модулям регистрировать пути, которые определяют запросы, подлежащие обработке. В зависимости от типа регистрации, запрошенного для каждого пути, ссылка помещается в блоке навигации и/или пункт появляется в меню административной страницы ('q=admin/menu'
).
Этот хук часто вызывается, например, при включении модуля.
'title'
: Обязательно. Непереведенное название пункта меню.'title callback'
: Функция для генерации названия пункта меню, по умолчаниюt()
. Если вы хотите вывести необработанные строки, установите этот параметр вFALSE
.'title arguments'
: Аргументы для функцииt()
или вашей персональной функции.'description'
: Непереведенное описание пункта меню.'page callback'
: Имя функции, вызываемой для отображения страницы, когда пользователь переходит по пункту меню. Если пропущено, будет вызвана функция родительского пункта меню.'page arguments'
: Массив аргументов, передаваемых функции'page callback'
. Целочисленные значения соответствуют частям URL (см. функциюarg()
).'access callback'
: Имя функции, возвращающей булево значение, определяющее, имеет ли пользователь права доступа к этому пункту меню. По-умолчанию —user_access()
или функция доступа родительского пункта меню.'access arguments'
: Массив аргументов, передаваемых в функцию'access callback'
. Целочисленные значения соответствуют частям URL.'weight'
: Целочисленное значение, обозначающее позицию пункта в меню. По умолчанию равно 0. Если не уверены, не указывайте это значение, сортировка по алфавиту почти всегда лучше.'menu_name'
: (опционально) Название меню, в которое следует поместить пункт. По-умолчанию пункты меню помещаются в менюNavigation
.'type'
: Тип пункта меню из списка:MENU_NORMAL_ITEM
: Нормальный пункт, который показывается в древе меню и может быть передвинут/скрыт администратором.MENU_CALLBACK
: Регистрирует функцию, которая что-то возвращает по соответствующему пути.MENU_SUGGESTED_ITEM
: Модули могут "предлагать" администратору пункты, которые полезно включить.MENU_LOCAL_TASK
: Локальные задачи отображаются как табы.MENU_DEFAULT_LOCAL_TASK
: Каждый набор локальных задач должен иметь одну по-умолчанию, которая ссылается на родительский пункт меню.
'type'
пропущен, он устанавливается вMENU_NORMAL_ITEM
по-умолчанию.
Примеры использования — page_example.module.
Возвращаемое значение
Массив пунктов меню. Каждый пункт меню имеет ключ, который согласуется с путём, который зарегистрирован в Drupal. Пункт - это ассоциативный массив, который содержит следующие пары ключ-значение:
Связанные темы
Код
<?php
function hook_menu() {
$items = array();
$items['blog'] = array(
'title' => 'blogs',
'description' => 'Listing of blogs.',
'page callback' => 'blog_page',
'access arguments' => array('access content'),
'type' => MENU_SUGGESTED_ITEM,
);
$items['blog/feed'] = array(
'title' => 'RSS feed',
'page callback' => 'blog_feed',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
?>
Есть ещё один аттрибут - 'file', который указывает на то, что код обработчика нужно искать в этом файле.
Пример:
'file' => 'keywords.pages.inc',
так же есть еще аттрибут -
'load arguments'
, необходмый для передачи дополнительных параметров в "параметризованную функцию" пункта меню.пример
'load arguments' => array('example1','example2');
предоставит два дополнительных параметра.
существует также еще несколько специальных параметра для
'load arguments'
'%map'
- содержит массив всех параметров пункта меню'%index'
- позиция "параметризованной функции" в списке параметров пункта менюпример
'load arguments' => array('%map', '%index')
расписал уж очень поверхностно.
инфа в книге "Pro drupal Develoment 6" John K. VanDyk , Chapter 4, page 78