НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
68 of 182 menu

Таблица 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,
    которая кеширует данные системы меню
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить