Menu system
Определяет навигационные меню и преобразует запросы страниц в вызовы функций, привязанные к путям на сайте.
Система меню Drupal управляет как навигационной системой c точки зрения пользователя, так и callback системой, которую Drupal использует, чтобы реагировать на URL полученный из браузера. Поэтому, правильное понимание системы меню является основой для создания сложных модулей.
Система меню Drupal поддерживает простую иерархию определяемую путями. Реализации hook_menu()
определяют пункты меню и назначают им пути (которые должны быть уникальными). Система меню собирает эти пункты и определяет иерархию меню из путей. Например, если пути определены как a, a/b, e, a/b/c/d, f/g, и a/b/h, то система меню сформирует следующую структуру:
- a
- a/b
- a/b/c/d
- a/b/h
- a/b
- e
- f/g
Обратите внимание: число составных частей в пути не обязательно определяет глубину пункта меню в дереве.
В ответ на запрос страницы, система меню проверяет был ли путь, который запросил браузер, зарегистрирован как пункт меню с обратным вызовом (callback). Если нет, то система продолжает искать в дереве меню наиболее полное совпадение с обратным вызовом (callback), которое можно найти. Если путь a/b/i был запрошен в дереве, показанном выше, будет использован обратный вызов (callback) для a/b.
Найденная коллбэк функция вызывается с любыми аргументами определенными в свойстве 'callback arguments'
этого пункта меню. Это свойство ("callback arguments"
) должно быть массивом. После этих аргументов, любые остальные части пути добавляются как дополнительные аргументы. Таким образом, коллбэк для a/b в примере выше реагировал бы на запрос для a/b/i иначе, чем на запрос для a/b/j. Прим. перевод.: i или j будут переданы как последние аргументы в коллбэк функцию, так как являются оставшимися частями пути для коллбэка a/b и поэтому функция может реагировать по разному.
Для иллюстрации этого процесса, смотрите page_example.module.
Доступ к коллбэк функциям также ограничивается системой меню.
Атрибут 'access'
каждого пункта меню проверяется во время поиска коллбэка. Если этот атрибут TRUE
, то доступ разрешается; если FALSE
, то доступ запрещается. Первый найденный атрибут 'access'
определяет доступность цели. Пункты меню могут опустить этот атрибут, чтобы использовать значение предоставленное родительским пунктом.
В интерфейсе Друпал по умолчанию, вы найдёте много ссылок, которые показаны как вкладки. В системе меню они отмечены как локальные задачи («local tasks») и они по умолчанию отображаются как вкладки, не смотря на то, что есть возможность представить их по другому. Локальные задачи работают также, как и другие пункты меню во многих аспектах. Есть соглашение о том, что эти задачи должны быть описаны как можно более короткими глаголами. В дополнение, локальная задача по умолчанию («default») должна быть в каждом наборе. При посещении родительского пункта меню локальной задачи, локальная задача по умолчанию будет показана, как-будто она была выбрана. Этого требует обычный опыт работы со вкладками пользователя. Эта задача по умолчанию особенная, потому что она указывает не путь, который она представляет, а путь, который указывает на родительский пункт. Путь задачи по умолчанию используется только, чтобы соответственно расположить её в в иерархии меню.
Константы
Имя | Описание |
---|---|
MENU_CALLBACK includes/menu.inc | Просто регистрирует функцию по заданному URL-у. Они не показываются в меню. |
MENU_CUSTOM_ITEM includes/menu.inc | Custom items are those defined by the administrator. Reserved for internal use; do not return from hook_menu() implementations. |
MENU_CUSTOM_MENU includes/menu.inc | Custom menus are those defined by the administrator. Reserved for internal use; do not return from hook_menu() implementations. |
MENU_DEFAULT_LOCAL_TASK includes/menu.inc | Каждый набор локальных задач предоставляет одну задачу по умолчанию ('default'), которая указывает на тот же путь, что и родитель, при щелчке мышью. |
MENU_DYNAMIC_ITEM includes/menu.inc | Dynamic menu items change frequently, and so should not be stored in the database for administrative customization. |
MENU_ITEM_GROUPING includes/menu.inc | Item groupings are used for pages like 'node/add' that simply list subpages to visit. They are distinguished from other pages in that they will disappear from the menu if no subpages exist. |
MENU_LOCAL_TASK includes/menu.inc | Локальные задачи показываются как вкладки по умолчанию. Используйте это для пунктов меню, которые описывают действия, который выполняются над родительским пунктом. Например, путь 'node/52/edit', который выполняет задачу редактирования ('edit') над 'node/52'. |
MENU_NORMAL_ITEM includes/menu.inc | Обычные пункты меню, которые показываются в дереве меню и могут быть перемещены/скрыты администратором. Используйте для большинства пунктов меню. Это значение по умолчанию, если тип пункта меню не указан. |
MENU_SUGGESTED_ITEM includes/menu.inc | Модули могут «предлагать» (suggest) элементы меню. По умолчанию такие элементы отключены, и действуют как простые коллбеки, до тех пор, пока администратор не включит их. При включении они становятся обычными пунктами меню. |
Функции
Имя | Описание |
---|---|
menu_execute_active_handler includes/menu.inc | Запускает обработчик связанный с активизированным пунктом меню. |
menu_get_active_breadcrumb includes/menu.inc | Получает хлебные крошки для текущей страницы, определенные активным путем. |
menu_get_active_help includes/menu.inc | Возвращает справку связанную с активизированным пунктом меню. |
menu_get_active_item includes/menu.inc | Возвращает ID активного пункта меню. |
menu_get_active_nontask_item includes/menu.inc | Возвращает ID текущего пункта меню или, если текущий пункт является локальной задачей, то ID пункта меню к которому эта задача прикреплена. |
menu_get_active_title includes/menu.inc | Возвращает заголовок активного пункта меню. |
menu_get_item includes/menu.inc | Возвращает пункт меню по заданному $mid, или по $path, если $mid не предоставляется. |
menu_get_local_tasks includes/menu.inc | Return the local task tree. |
menu_get_menu includes/menu.inc | Return the menu data structure. |
menu_get_root_menus includes/menu.inc | Retrieves the menu ID and title of all root menus. |
menu_in_active_trail includes/menu.inc | Returns TRUE when the menu item is in the active trail. |
menu_in_active_trail_in_submenu includes/menu.inc | Returns TRUE when the menu item is in the active trail within a specific subsection of the menu tree. |
menu_item_link includes/menu.inc | Returns the rendered link to a menu item. |
menu_primary_links includes/menu.inc | Returns an array containing the primary links. Can optionally descend from the root of the Primary links menu towards the current node for a specified number of levels and return that submenu. Used to generate a primary/secondary menu from different... |
menu_primary_local_tasks includes/menu.inc | Возращает оформленные локальные задачи для самого верхнего уровня. |
menu_rebuild includes/menu.inc | Заполняет данные, относящееся к меню в базе данных. |
menu_secondary_links includes/menu.inc | Returns an array containing the secondary links. Secondary links can be either a second level of the Primary links menu or generated from their own menu. |
menu_secondary_local_tasks includes/menu.inc | Возращает оформление HTML вторичных локальных задач. |
menu_set_active_item includes/menu.inc | Задает путь активного пункта меню. |
menu_set_location includes/menu.inc | Change the current menu location of the user. |
menu_tree includes/menu.inc | Возвращает отрендеренное дерево меню. |
theme_menu_item includes/menu.inc | Generate the HTML output for a single menu item. |
theme_menu_item_link includes/menu.inc | Генерирует HTML, представляющий заданный ID пункта меню. |
theme_menu_links includes/menu.inc | Returns the themed HTML for primary and secondary links. Note that this function is overridden by most core themes because those themes display links in 'link | link' format, not from a list. Also note that by default links rendered with... |
theme_menu_local_task includes/menu.inc | Generate the HTML representing a given menu item ID as a tab. |
theme_menu_local_tasks includes/menu.inc | Returns the rendered local tasks. The default implementation renders them as tabs. |
theme_menu_tree includes/menu.inc | Генерирует HTML-код, выводимый для дерева меню. |