Определяет навигационные меню и преобразует запросы страниц в вызовы функций, привязанные к путям на сайте.
Система меню Друпала управляет как навигационной системой c точки зрения пользователя, так и callbackсистемой, которую Друпал использует, чтобы реагировать на URL полученный из браузера. Поэтому, правильное понимание системы меню является основой для создания сложных модулей.
Система меню Друпала поддерживает простую иерархию определяемую путями. Реализации
определяют пункты меню и назначают им пути (которые должны быть уникальными). Система меню собирает эти пункты и определяет иерархию меню из путей. Например, если пути определены как 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
Обратите внимание: число составных частей в пути не обязательно определяет глубину пункта меню в дереве.
В ответ на запрос страницы, система меню проверяет был ли путь, который запросил браузер, зарегистрирован как пункт меню с коллбеком (функцией, отвечающей данному пути). Если нет, то система продолжает искать в дереве меню наиболее полное совпадение (с коллбеком), которое можно найти. Если путь a/b/i был запрошен в дереве, показанном выше, будет использован коллбек для a/b.
Коллбек найденного пункта меню, вызывается с аргументами, в порядке, указанном в 'page arguments'
спецификации этого пункта меню. Атрибуты должны быть помещены в массив. После этих аргументов, к компонентам указанного пути добавляются дополнительные аргументы. Таким образом, колбек a/b в приведенном примере может отдавать страницу a/b/i по другому, чем a/b/j.
Для иллюстрации этого процесса, смотрите
Доступ к функциям обратного вызова также определяется системой меню. Коллбек доступа ('access callback'
) с необязательными аргументами доступа ('access arguments'
) каждого пункта меню, вызывается перед тем как будет выполнен коллбек страницы. Если возвращается TRUE
, то доступ разрешён; если FALSE
, то доступ запрещён. Пункты меню могут пропускать этот атрибут, чтобы использовать значение, которое предоставляет родительский пункт.
В интерфейсе Друпал по умолчанию, вы найдёте много ссылок, которые показаны как вкладки. В системе меню они называются локальные задачи (local tasks) и по-умолчанию отображаются как вкладки (хотя и есть возможность представить их по-другому). Локальные задачи работают также, как и другие пункты меню во многих аспектах. Есть соглашение о том, что эти задачи должны быть описаны как можно более короткими глаголами. В дополнение, локальная задача по-умолчанию должна быть в каждом наборе. При посещении родительского пункта меню локальной задачи, локальная задача по умолчанию будет показана, как-будто она была выбрана. Этого требует обычный опыт работы со вкладками пользователя. Эта задача по умолчанию особенная, потому что она указывает не путь, который она представляет, а путь, который указывает на родительский пункт. Путь задачи по умолчанию используется только, чтобы соответственно расположить её в в иерархии меню.
Все, описанное выше, хранится в таблице 'menu_router'
. Видимые ссылки меню хранятся в таблице'menu_links'
. По умолчанию они получены из тох же самых определений через
, но вы можете свободно добавлять ещё через
.
Константы
Имя | Описание |
---|---|
includes/ |
Просто регистрирует функцию по заданному URL-у. Они не показываются в меню. |
includes/ |
Каждый набор локальных задач предоставляет одну задачу по умолчанию (‘default’), которая указывает на тот же путь, что и родитель, при щелчке мышью. |
includes/ |
Локальные задачи показываются как вкладки по умолчанию. Используйте это для пунктов меню, которые описывают действия, который выполняются над родительским пунктом. Например, путь ‘node/52/edit’, который выполняет задачу редактирования (‘edit’) над ‘node/52′. |
includes/ |
The maximum depth of a menu links tree — matches the number of p columns. |
includes/ |
Максимальное количество элементов пути для обратного вызвова (callback) меню |
includes/ |
Обычные пункты меню, которые показываются в дереве меню и могут быть перемещены/скрыты администратором. Используйте для большинства пунктов меню. Это значение по умолчанию, если тип пункта меню не указан. |
includes/ |
Модули могут «предлагать» (suggest) элементы меню. По умолчанию такие элементы отключены, и действуют как простые коллбеки, до тех пор, пока администратор не включит их. При включении они становятся обычными пунктами меню. |
Функции
Имя | Описание |
---|---|
includes/ |
Создаёт элементы для массива $arg в |
includes/ |
Очищает кеш для единичного элемента меню. |
includes/ |
Очищает все кешированные данные меню. Должна вызвааться каждый раз, если изменения могут затронуть иерархиею пунктов или ссылки меню. |
includes/ |
Выполняет функцию, которая ассоциируется с текущим путём. |
includes/ |
Получает хлебные крошки для текущей страницы, определенные активным путем. |
includes/ |
Возвращает справку связанную с активизированным пунктом меню. |
includes/ |
Получает активное меню для текущей страницы — определяет активный путь. |
includes/ |
Получает заголовок текущей страницы, как определено активным путём. |
includes/ |
Получает активный след текущей страницы — путь к корню в дереве меню. |
includes/ |
Returns the ancestors (and relevant placeholders) for any given path. |
includes/ |
Получает элемент роутера. |
includes/ |
Строит список названий меню. |
includes/ |
Возвращает загруженный объект из роутера меню. |
includes/ |
Находит глубину потомков пункта по отношению к глубине пункта. |
includes/ |
Удаляет один или несколько пунктов меню. |
includes/ |
Возвращает элемент меню по его идентификатору (mlid), с проверкой доступа и переведенным заголовком и описанием. Такой элемент готов к рендерингу и выводу. |
includes/ |
Вставляет, обновляет или удаляет uncustomized ссылку меню относящуюся к модулю. |
includes/ |
Сохраняет ссылку меню. |
includes/ |
Возвращает массив, который содержит названия системных (по умолчанию) меню. |
includes/ |
Собирает локальные задачи (вкладки) для заданного уровня. |
includes/ |
Возращает массив ссылок для меню навигации. |
includes/ |
Возвратить TRUE если путь является внешним (например http://example.com). |
includes/ |
Возвращает массив ссылок для отображения меню «Основные ссылки». |
includes/ |
Возращает оформленные локальные задачи для самого верхнего уровня. |
includes/ |
(Пере)заполняет таблицы базы данных, используемые различными функциями меню. |
includes/ |
Собирает, изменяет и хранит определения меню и элементов. |
includes/ |
Возвращает массив ссылок, которые должны отображаться как Дополнительные ссылки. |
includes/ |
Возращает оформленные локальные задачи второго уровня. |
includes/ |
Задает активный путь, который определяет, какая страница загружена. |
includes/ |
Устанавливает (или получает) активное меню для текущей страницы, определяя активный след. |
includes/ |
Задает (или получает) активный след текущей страницы — путь к корню в дереве меню. |
includes/ |
Заменяет статически кэшированный элемент заданного пути. |
includes/ |
Returns the router path, or the path of the parent tab of a default local task. |
includes/ |
Рендерит дерево меню, учитывая текущий путь. |
includes/ |
Получить данные структуры, представляющие название дерева меню. |
includes/ |
Проверяет доступ и выполняет другие динамические операции для каждой ссылки в дереве меню. |
includes/ |
Вспомогательная рекурсивная функция. Собирает ссылки на ноды. |
includes/ |
Строит данные, представляющие дерево меню. |
includes/ |
Возвращает сформированное для вывода дерево меню. |
includes/ |
Get the data structure representing a named menu tree, based on the current page. |
includes/ |
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. |
includes/ |
Проверяет путь ссылки создаваемого или редактируемого пункта меню. |
includes/ |
Генерирует HTML код для пункта меню и подменю. |
includes/ |
Генерирует вывод HTML данных для единичной ссылки меню. |
includes/ |
Создаёт HTML для ссылки на одну локальную задачу (рисует вкладку). |
includes/ |
Returns the rendered local tasks. The default implementation renders them as tabs. |
includes/ |
Генерирует HTML-код, выводимый для дерева меню. |
includes/ |
Проверяет право доступа к пункту меню, используя коллбэк доступа. |
includes/ |
Helper function to clear the page and block caches at most twice per page load. |
includes/ |
Вспомогательная функция для menu_link_delete; удаляет единичную ссылку меню. |
includes/ |
Find the router path which will serve this path. |
includes/ |
Localize the router item title using |
includes/ |
Создает ссылку из элемента рутера. |
includes/ |
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. |
includes/ |
Обновляет дочерние элементы ссылки меню, которая перемещается. |
includes/ |
Helper function that sets the p1..p9 values for a menu link being saved. |
includes/ |
This function is similar to |
includes/ |
Загружает объекты в карту определенные в $item['load_functions']. |
includes/ |
Helper function to build menu links for the items in the menu router. |
includes/ |
Helper function to build the router table based on the data from hook_menu. |
includes/ |
Helper function to store the menu router if we have it in memory. |
includes/ |
Helper function to update a list of menus with expanded items |
includes/ |
Проверяет, находится ли сайт в автономном режиме «на обслуживании». |
includes/ |
Handles dynamic path translation and menu access control. |
includes/ |
Recursive helper function for |
includes/ |
Helper function — compute the real cache ID for menu tree data. |
includes/ |
Recursive helper function to build the data representing a menu tree. |
includes/ |
Проверяет и обновляет статус ‘has_children’ для родительской ссылки. |
Источник: