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

Таблица menu_link_content__menu_parent

Таблица menu_link_content__menu_parent является дельта-таблицей (data table) в Drupal, которая хранит данные о родительских пунктах меню для сущностей типа "Пункт меню" (menu_link_content). Она создается и управляется модулем Field API для хранения значений поля menu_parent.

Поля

Поле Тип данных Описание
bundle varchar(128) Тип сущности (бандл), к которой относится данная запись. Для пунктов меню обычно имеет значение menu_link_content.
deleted int Флаг удаления: 0 - запись активна, 1 - запись удалена.
entity_id int Идентификатор сущности пункта меню. Внешний ключ, ссылается на id в таблице menu_link_content.
revision_id int Идентификатор ревизии сущности. Внешний ключ, ссылается на revision_id в таблице menu_link_content_revision.
langcode varchar(32) Код языка, для которого предназначено это значение поля.
delta int Порядковый номер значения в случае, если поле может содержать несколько значений.
menu_parent_value varchar(255) Значение родительского пункта меню в формате menu_name:id, где menu_name - машинное имя меню, а id - идентификатор родительского пункта.

Как это работает

Когда в Drupal создается или редактируется пункт меню, и для него указывается родительский элемент, значение поля menu_parent сохраняется в этой таблице. Drupal использует систему дельта-таблиц (data tables) для хранения данных полей сущностей, что обеспечивает гибкость в управлении данными.

Значение menu_parent_value хранится в специальном формате, который включает машинное имя меню и ID родительского пункта. Например, main:123 означает, что пункт находится в меню "main" и его родителем является пункт с ID 123.

При построении древовидной структуры меню Drupal использует данные из этой таблицы для определения иерархии пунктов. Система кэширования меню агрегирует данные из базовой таблицы menu_link_content и дельта-таблиц для эффективного отображения меню на сайте.

Поле deleted используется для мягкого удаления записей при удалении поля из бандла или самой сущности, что позволяет при необходимости восстановить данные.

Пример SQL-запроса

Получить информацию о родительских пунктах для всех активных пунктов меню можно следующим запросом:

SELECT mlc.id, mlc.title, mlc.menu_name, mlcp.menu_parent_value FROM menu_link_content mlc JOIN menu_link_content__menu_parent mlcp ON mlc.id = mlcp.entity_id WHERE mlcp.deleted = 0;

Смотрите также

  • таблицу menu_link_content,
    которая содержит основные данные пунктов меню
  • таблицу menu_link_content_revision,
    которая хранит ревизии пунктов меню
  • таблицу menu_tree,
    которая содержит скомпилированную древовидную структуру меню
  • таблицу menu_tree_hash,
    которая хранит хэши структуры меню для кэширования