Таблица menu_custom
Таблица menu_custom является центральным реестром пользовательских меню в Drupal. Каждая запись в этой таблице представляет собой отдельное меню, такое как "Основное навигационное меню", "Меню пользователя" или любое другое меню, созданное администратором. В этой таблице хранятся основные свойства меню, в то время как ссылки меню хранятся в отдельной таблице menu_link_content.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
varchar(255) |
Уникальный машинное имя меню. Это значение используется для идентификации меню в коде и API Drupal (например, main, footer).
|
label |
varchar(255) |
Человекочитаемое название меню, которое отображается в административном интерфейсе (например, "Основное меню"). |
description |
text |
Необязательное описание меню, которое помогает администраторам понять его назначение. |
locked |
tinyint |
Флаг, указывающий, заблокировано ли меню для удаления через административный интерфейс. Значение 1 означает, что меню заблокировано (например, системные меню по умолчанию). Значение 0 разрешает удаление.
|
Как это работает
При установке Drupal создаются несколько меню по умолчанию (например, main, tools, account), записи о которых добавляются в таблицу menu_custom с флагом locked = 1. Администраторы могут создавать новые пользовательские меню через интерфейс администрирования (Администрирование > Структура > Меню > Добавить меню), что приводит к вставке новой записи в эту таблицу.
Машинное имя (id) является первичным ключом таблицы и используется во многих системных функциях Drupal для загрузки, рендеринга и управления конкретным меню. Например, для рендеринга меню в Twig-шаблоне используется конструкция вида {{ menu_name }}.
Важно различать таблицу menu_custom, которая хранит метаинформацию о меню, и таблицы menu_link_content и menu_tree, которые хранят непосредственно hierarchical структуру ссылок, принадлежащих этим меню. Удаление меню из menu_custom приведет к каскадному удалению всех его ссылок из связанных таблиц.
Пример SQL-запроса
Получить список всех пользовательских меню (незаблокированных для удаления) можно следующим запросом:
SELECT id, label, description
FROM menu_custom
WHERE locked = 0
ORDER BY label;
Проверить существование меню по его машинному имени:
SELECT COUNT(*)
FROM menu_custom
WHERE id = 'main';
Смотрите также
-
таблицу
menu_link_content,
которая хранит содержимое ссылок меню -
таблицу
menu_tree,
которая хранит иерархическую структуру меню -
таблицу
router,
которая хранит информацию о маршрутах системы -
таблицу
cache_menu,
которая хранит кеш данных меню