Распечатать статью

Система меню

Определяет навигационные меню и преобразует запросы страниц в вызовы функций, привязанные к путям на сайте.

Система меню Друпала управляет как навигационной системой c точки зрения пользователя, так и callbackсистемой, которую Друпал использует, чтобы реагировать на URL полученный из браузера. Поэтому, правильное понимание системы меню является основой для создания сложных модулей.

Система меню Друпала поддерживает простую иерархию определяемую путями. Реализации 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
  • e
  • f/g

Обратите внимание: число составных частей в пути не обязательно определяет глубину пункта меню в дереве.

В ответ на запрос страницы, система меню проверяет был ли путь, который запросил браузер, зарегистрирован как пункт меню с коллбеком (функцией, отвечающей данному пути). Если нет, то система продолжает искать в дереве меню наиболее полное совпадение (с коллбеком), которое можно найти. Если путь a/b/i был запрошен в дереве, показанном выше, будет использован коллбек для a/b.

Коллбек найденного пункта меню, вызывается с аргументами, в порядке, указанном в 'page arguments'спецификации этого пункта меню. Атрибуты должны быть помещены в массив. После этих аргументов, к компонентам указанного пути добавляются дополнительные аргументы. Таким образом, колбек a/b в приведенном примере может отдавать страницу a/b/i по другому, чем a/b/j.

Для иллюстрации этого процесса, смотрите page_example.module.

Доступ к функциям обратного вызова также определяется системой меню. Коллбек доступа ('access callback') с необязательными аргументами доступа ('access arguments') каждого пункта меню, вызывается перед тем как будет выполнен коллбек страницы. Если возвращается TRUE, то доступ разрешён; если FALSE, то доступ запрещён. Пункты меню могут пропускать этот атрибут, чтобы использовать значение, которое предоставляет родительский пункт.

В интерфейсе Друпал по умолчанию, вы найдёте много ссылок, которые показаны как вкладки. В системе меню они называются локальные задачи (local tasks) и по-умолчанию отображаются как вкладки (хотя и есть возможность представить их по-другому). Локальные задачи работают также, как и другие пункты меню во многих аспектах. Есть соглашение о том, что эти задачи должны быть описаны как можно более короткими глаголами. В дополнение, локальная задача по-умолчанию должна быть в каждом наборе. При посещении родительского пункта меню локальной задачи, локальная задача по умолчанию будет показана, как-будто она была выбрана. Этого требует обычный опыт работы со вкладками пользователя. Эта задача по умолчанию особенная, потому что она указывает не путь, который она представляет, а путь, который указывает на родительский пункт. Путь задачи по умолчанию используется только, чтобы соответственно расположить её в в иерархии меню.

Все, описанное выше, хранится в таблице 'menu_router'. Видимые ссылки меню хранятся в таблице'menu_links'. По умолчанию они получены из тох же самых определений через hook_menu(), но вы можете свободно добавлять ещё через menu_link_save().

Константы

Имя Описание
MENU_CALLBACK
includes/menu.inc
Просто регистрирует функцию по заданному URL-у. Они не показываются в меню.
MENU_DEFAULT_LOCAL_TASK
includes/menu.inc
Каждый набор локальных задач предоставляет одну задачу по умолчанию (‘default’), которая указывает на тот же путь, что и родитель, при щелчке мышью.
MENU_LOCAL_TASK
includes/menu.inc
Локальные задачи показываются как вкладки по умолчанию. Используйте это для пунктов меню, которые описывают действия, который выполняются над родительским пунктом. Например, путь ‘node/52/edit’, который выполняет задачу редактирования (‘edit’) над ‘node/52′.
MENU_MAX_DEPTH
includes/menu.inc
The maximum depth of a menu links tree — matches the number of p columns.
MENU_MAX_PARTS
includes/menu.inc
Максимальное количество элементов пути для обратного вызвова (callback) меню
MENU_NORMAL_ITEM
includes/menu.inc
Обычные пункты меню, которые показываются в дереве меню и могут быть перемещены/скрыты администратором. Используйте для большинства пунктов меню. Это значение по умолчанию, если тип пункта меню не указан.
MENU_SUGGESTED_ITEM
includes/menu.inc
Модули могут «предлагать» (suggest) элементы меню. По умолчанию такие элементы отключены, и действуют как простые коллбеки, до тех пор, пока администратор не включит их. При включении они становятся обычными пунктами меню.

Функции

Имя Описание
drupal_help_arg
includes/menu.inc
Создаёт элементы для массива $arg в hook_help().
menu_cache_clear
includes/menu.inc
Очищает кеш для единичного элемента меню.
menu_cache_clear_all
includes/menu.inc
Очищает все кешированные данные меню. Должна вызвааться каждый раз, если изменения могут затронуть иерархиею пунктов или ссылки меню.
menu_execute_active_handler
includes/menu.inc
Выполняет функцию, которая ассоциируется с текущим путём.
menu_get_active_breadcrumb
includes/menu.inc
Получает хлебные крошки для текущей страницы, определенные активным путем.
menu_get_active_help
includes/menu.inc
Возвращает справку связанную с активизированным пунктом меню.
menu_get_active_menu_name
includes/menu.inc
Получает активное меню для текущей страницы — определяет активный путь.
menu_get_active_title
includes/menu.inc
Получает заголовок текущей страницы, как определено активным путём.
menu_get_active_trail
includes/menu.inc
Получает активный след текущей страницы — путь к корню в дереве меню.
menu_get_ancestors
includes/menu.inc
Returns the ancestors (and relevant placeholders) for any given path.
menu_get_item
includes/menu.inc
Получает элемент роутера.
menu_get_names
includes/menu.inc
Строит список названий меню.
menu_get_object
includes/menu.inc
Возвращает загруженный объект из роутера меню.
menu_link_children_relative_depth
includes/menu.inc
Находит глубину потомков пункта по отношению к глубине пункта.
menu_link_delete
includes/menu.inc
Удаляет один или несколько пунктов меню.
menu_link_load
includes/menu.inc
Возвращает элемент меню по его идентификатору (mlid), с проверкой доступа и переведенным заголовком и описанием. Такой элемент готов к рендерингу и выводу.
menu_link_maintain
includes/menu.inc
Вставляет, обновляет или удаляет uncustomized ссылку меню относящуюся к модулю.
menu_link_save
includes/menu.inc
Сохраняет ссылку меню.
menu_list_system_menus
includes/menu.inc
Возвращает массив, который содержит названия системных (по умолчанию) меню.
menu_local_tasks
includes/menu.inc
Собирает локальные задачи (вкладки) для заданного уровня.
menu_navigation_links
includes/menu.inc
Возращает массив ссылок для меню навигации.
menu_path_is_external
includes/menu.inc
Возвратить TRUE если путь является внешним (например http://example.com).
menu_primary_links
includes/menu.inc
Возвращает массив ссылок для отображения меню «Основные ссылки».
menu_primary_local_tasks
includes/menu.inc
Возращает оформленные локальные задачи для самого верхнего уровня.
menu_rebuild
includes/menu.inc
(Пере)заполняет таблицы базы данных, используемые различными функциями меню.
menu_router_build
includes/menu.inc
Собирает, изменяет и хранит определения меню и элементов.
menu_secondary_links
includes/menu.inc
Возвращает массив ссылок, которые должны отображаться как Дополнительные ссылки.
menu_secondary_local_tasks
includes/menu.inc
Возращает оформленные локальные задачи второго уровня.
menu_set_active_item
includes/menu.inc
Задает активный путь, который определяет, какая страница загружена.
menu_set_active_menu_name
includes/menu.inc
Устанавливает (или получает) активное меню для текущей страницы, определяя активный след.
menu_set_active_trail
includes/menu.inc
Задает (или получает) активный след текущей страницы — путь к корню в дереве меню.
menu_set_item
includes/menu.inc
Заменяет статически кэшированный элемент заданного пути.
menu_tab_root_path
includes/menu.inc
Returns the router path, or the path of the parent tab of a default local task.
menu_tree
includes/menu.inc
Рендерит дерево меню, учитывая текущий путь.
menu_tree_all_data
includes/menu.inc
Получить данные структуры, представляющие название дерева меню.
menu_tree_check_access
includes/menu.inc
Проверяет доступ и выполняет другие динамические операции для каждой ссылки в дереве меню.
menu_tree_collect_node_links
includes/menu.inc
Вспомогательная рекурсивная функция. Собирает ссылки на ноды.
menu_tree_data
includes/menu.inc
Строит данные, представляющие дерево меню.
menu_tree_output
includes/menu.inc
Возвращает сформированное для вывода дерево меню.
menu_tree_page_data
includes/menu.inc
Get the data structure representing a named menu tree, based on the current page.
menu_unserialize
includes/menu.inc
The menu system uses serialized arrays stored in the database for arguments. However, often these need to change according to the current path. This function unserializes such an array and does the necessary change.
menu_valid_path
includes/menu.inc
Проверяет путь ссылки создаваемого или редактируемого пункта меню.
theme_menu_item
includes/menu.inc
Генерирует HTML код для пункта меню и подменю.
theme_menu_item_link
includes/menu.inc
Генерирует вывод HTML данных для единичной ссылки меню.
theme_menu_local_task
includes/menu.inc
Создаёт HTML для ссылки на одну локальную задачу (рисует вкладку).
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-код, выводимый для дерева меню.
_menu_check_access
includes/menu.inc
Проверяет право доступа к пункту меню, используя коллбэк доступа.
_menu_clear_page_cache
includes/menu.inc
Helper function to clear the page and block caches at most twice per page load.
_menu_delete_item
includes/menu.inc
Вспомогательная функция для menu_link_delete; удаляет единичную ссылку меню.
_menu_find_router_path
includes/menu.inc
Find the router path which will serve this path.
_menu_item_localize
includes/menu.inc
Localize the router item title using t() or another callback.
_menu_link_build
includes/menu.inc
Создает ссылку из элемента рутера.
_menu_link_map_translate
includes/menu.inc
This function translates the path elements in the map using any to_arg helper function. These functions take an argument and return an object. See http://drupal.org/node/109153 for more information.
_menu_link_move_children
includes/menu.inc
Обновляет дочерние элементы ссылки меню, которая перемещается.
_menu_link_parents_set
includes/menu.inc
Helper function that sets the p1..p9 values for a menu link being saved.
_menu_link_translate
includes/menu.inc
This function is similar to _menu_translate() but does link-specific preparation such as always calling to_arg functions.
_menu_load_objects
includes/menu.inc
Загружает объекты в карту определенные в $item['load_functions'].
_menu_navigation_links_rebuild
includes/menu.inc
Helper function to build menu links for the items in the menu router.
_menu_router_build
includes/menu.inc
Helper function to build the router table based on the data from hook_menu.
_menu_router_cache
includes/menu.inc
Helper function to store the menu router if we have it in memory.
_menu_set_expanded_menus
includes/menu.inc
Helper function to update a list of menus with expanded items
_menu_site_is_offline
includes/menu.inc
Проверяет, находится ли сайт в автономном режиме «на обслуживании».
_menu_translate
includes/menu.inc
Handles dynamic path translation and menu access control.
_menu_tree_check_access
includes/menu.inc
Recursive helper function for menu_tree_check_access()
_menu_tree_cid
includes/menu.inc
Helper function — compute the real cache ID for menu tree data.
_menu_tree_data
includes/menu.inc
Recursive helper function to build the data representing a menu tree.
_menu_update_parental_status
includes/menu.inc
Проверяет и обновляет статус ‘has_children’ для родительской ссылки.

Источник: drupal.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи