Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
70 of 182 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица 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,
    которая хранит кеш данных меню