Таблица menu_router
Таблица menu_router представляет собой карту маршрутов Drupal, связывая пути URL с соответствующими функциями обратного вызова, которые должны быть выполнены при обращении к этим путям. Это фундаментальный компонент системы меню Drupal, определяющий, какой контроллер обрабатывает каждый запрос.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
path |
varchar(255) |
Первичный ключ. Путь Drupal (например, node/% или user/login), для которого определен данный маршрут. Может содержать wildcards (%).
|
load_functions |
blob |
Сериализованный массив функций, используемых для загрузки объектов из wildcards в пути. Каждый элемент массива соответствует wildcard в пути. |
to_arg_functions |
blob |
Сериализованный массив функций, которые преобразуют wildcards в пути в аргументы для функции страницы. |
access_callback |
varchar(255) |
Имя функции, которая проверяет доступ к данному маршруту. Возвращает TRUE или FALSE. |
access_arguments |
blob |
Сериализованный массив аргументов, передаваемых в функцию проверки доступа. |
page_callback |
varchar(255) |
Имя функции, которая генерирует содержимое страницы для данного маршрута. |
page_arguments |
blob |
Сериализованный массив аргументов, передаваемых в функцию генерации страницы. |
delivery_callback |
varchar(255) |
Функция, которая отвечает за доставку (вывод) сгенерированного содержимого страницы. По умолчанию drupal_deliver_html_page.
|
fit |
int |
Число, указывающее насколько точно путь соответствует запросу. Используется для разрешения неоднозначности при нескольких подходящих маршрутах. |
number_parts |
smallint |
Количество частей в пути (разделенных /). Используется для оптимизации поиска подходящего маршрута. |
context |
int |
Битовая маска, указывающая тип контекста, который ожидает маршрут (например, MENU_CONTEXT_INLINE, MENU_CONTEXT_PAGE). |
tab_parent |
varchar(255) |
Путь родительской вкладки для данного маршрута, если он является локальной задачей (вкладкой). |
tab_root |
varchar(255) |
Корневой путь для вкладок данного маршрута. |
title |
varchar(255) |
Заголовок страницы для данного маршрута. |
title_callback |
varchar(255) |
Функция для генерации заголовка страницы. |
title_arguments |
varchar(255) |
Аргументы для функции генерации заголовка. |
theme_callback |
varchar(255) |
Функция для определения темы, которая должна использоваться для отображения страницы. |
theme_arguments |
varchar(255) |
Аргументы для функции определения темы. |
type |
int |
Тип элемента меню (например, MENU_NORMAL_ITEM, MENU_CALLBACK, MENU_LOCAL_TASK). |
description |
text |
Описание маршрута, используемое для SEO и подсказок. |
position |
varchar(255) |
Позиция элемента в меню (например, left или right).
|
weight |
int |
Вес элемента, определяющий его порядок относительно других элементов. |
include_file |
varchar(255) |
Путь к файлу, который должен быть включен перед вызовом callback-функций. |
module |
varchar(255) |
Название модуля, который определяет данный маршрут. |
file |
varchar(255) |
Имя файла (относительно пути модуля), в котором находятся callback-функции. |
Как это работает
Когда пользователь запрашивает страницу на сайте Drupal, система меню анализирует запрошенный URL и ищет наиболее подходящий маршрут в таблице menu_router. Поиск осуществляется на основе количества совпадающих частей пути и значения поля fit.
После нахождения подходящего маршрута Drupal выполняет следующие действия:
1. Проверяет доступ с помощью access_callback и access_arguments.
2. Если доступ разрешен, загружает необходимые объекты с помощью load_functions.
3. Вызывает page_callback с аргументами из page_arguments для генерации содержимого.
4. Доставляет результат с помощью delivery_callback.
Таблица menu_router обычно перестраивается при очистке кеша или установке/включении новых модулей через вызов функции menu_rebuild().
Пример SQL-запроса
Посмотреть все маршруты, определенные модулем node:
SELECT path, page_callback, title
FROM menu_router
WHERE module = 'node'
ORDER BY path;
Смотрите также
-
таблицу
menu_links,
которая содержит ссылки меню на основе router-записей -
таблицу
url_alias,
которая хранит псевдонимы путей системы меню -
таблицу
menu_custom,
которая содержит пользовательские меню -
таблицу
cache_menu,
которая кеширует данные системы меню