page_example_menu
developer/examples/page_example.module, строка 68
- Версии
- 5
page_example_menu(
$may_cache)- 6
page_example_menu()
Реализация hook_menu()
.
Вы должны выполнить hook_menu()
для добавления элементов в главное меню. Это необходимый шаг для модулей желающих показать свои собственные страницы, потому что процесс создания ссылок также сообщает Друпалу какие обратные вызовы (коллбэки) использоваться для данного URL адреса. Пункты меню передают эту информацию в систему меню.
С ниже определённым меню, URL адреса будут интерпретироваться следующим образом:
Если пользователь запрашивает http://example.com/?q=foo, тогда система меню сначала будет искать пункт меню с этим путем. В этом случае она найдет соответствие и выполнит page_example_foo()
.
Если пользователь запрашивает http://example.com/?q=bar, соответствия не будут найдены и будет отображена страница 404 ошибки.
Если пользователь запрашивает http://example.com/?q=baz, тогда система меню найдёт совпадение и выполнит page_example_baz()
.
Если пользователь запрашивает http://example.com/?q=bar/baz/1/2, тогда система меню сначала будет искать bar/baz/1/2. Не найдя совпадение, будет искать bar/baz/1. Опять не найдя совпадение, будет искать bar/baz. На этот раз найдёт совпадение и выполнит page_example_baz(1,2). Обратите внимание на переданные параметры; это очень полезная техника.
Если пользователь запрашивает http://example.com/?q=bar/baz/52/97, тогда система меню найдёт совпадение, но так как его обратный вызов (коллбэк) отсутствует, это будет происходить, как и выше и закончится всё-таки вызовом page_example_baz(52,97).
Код
<?php
function page_example_menu($may_cache) {
$items = array();
// The $may_cache parameter is used to divide menu items into two parts. Those
// returned when $may_cache is true must be consistently applicable for the
// current user at all times; the others may change or be defined at only
// certain paths. Most modules will have excusively cacheable menu items.
if ($may_cache) {
// This is the minimum information you can provide for a menu item.
$items[] = array('path' => 'foo', 'title' => t('foo'),
'callback' => 'page_example_foo',
'access' => user_access('access foo'));
// By using the MENU_CALLBACK type, we can register the callback for this
// path but not have the item show up in the menu; the admin is not allowed
// to enable the item in the menu, either.
$items[] = array('path' => 'bar/baz', 'title' => t('baz'),
'callback' => 'page_example_baz',
'access' => user_access('access baz'),
'type' => MENU_CALLBACK);
// Here is a menu item that doesn't register a callback. By default, the
// attributes are inherited from the parent menu item. In this case, the
// permissions of the parent suffice but we to override the title if
// they enter some "magic" parameters. Note: if you remove the 'type'
// attribute, the item will appear in the menu.
$items[] = array('path' => 'bar/baz/52/97',
'title' => t('the magic numbers'),
'type' => MENU_CALLBACK);
}
return $items;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии