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

Таблица menu_link_content_data

Таблица menu_link_content_data является центральным хранилищем для пользовательских элементов меню в Drupal. В отличие от системных ссылок меню, которые определяются кодом модулей, записи в этой таблице создаются, редактируются и удаляются пользователями через административный интерфейс. Каждая запись представляет собой отдельную ссылку в меню.

Поля

Поле Тип данных Описание
id varchar(255) Уникальный идентификатор ссылки меню в формате UUID. Является первичным ключом таблицы.
bundle varchar(128) Тип (бандин) ссылки меню. По умолчанию используется значение menu_link_content.
uuid varchar(128) Уникальный универсальный идентификатор (UUID) для данной сущности ссылки меню.
langcode varchar(12) Код языка, к которому привязана данная ссылка меню. Поддерживает многоязычность.
enabled tinyint Флаг, указывающий, включена ли ссылка меню (1) или отключена (0). Отключенные ссылки не отображаются в меню.
title varchar(255) Заголовок ссылки меню, который отображается пользователям.
description varchar(255) Описание ссылки меню, которое может отображаться в виде всплывающей подсказки.
menu_name varchar(255) Машинное имя меню, к которому принадлежит данная ссылка (например, main, footer, account).
link__uri varchar(2048) URI ссылки в формате Drupal (например, internal:/node/1, entity:node/1, https://example.com).
link__title varchar(255) Заголовок ссылки, используемый для атрибута title.
link__options blob Сериализованный массив дополнительных опций для ссылки, таких как атрибуты HTML, параметры запроса и др.
external tinyint Флаг, указывающий, является ли ссылка внешней (1) или внутренней (0).
rediscover tinyint Флаг, указывающий, должна ли система пытаться переобнаружить ссылку при очистке кеша.
weight int Вес ссылки, определяющий её положение в меню относительно других элементов. Элементы с меньшим весом выводятся выше.
expanded tinyint Флаг, указывающий, должно ли меню быть развернуто, если данный элемент является родительским (1) или свернуто (0).
parent varchar(255) Идентификатор родительского элемента меню в формате menu_link_content:UUID. Определяет иерархию меню.
changed int Метка времени Unix, указывающая, когда ссылка была в последний раз изменена.
default_langcode tinyint Флаг, указывающий, является ли данная запись переводом (0) или записью на языке по умолчанию (1).

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

Когда пользователь создает новую ссылку меню через административный интерфейс Drupal (/admin/structure/menu/item/add/*), система создает новую запись в таблице menu_link_content_data. Каждой ссылке присваивается уникальный UUID, который используется для идентификации throughout системе.

Поле menu_name определяет, к какому конкретному меню принадлежит ссылка. Это позволяет иметь разные наборы ссылок для основного меню, меню футера, пользовательского меню и других.

Иерархическая структура меню формируется через поле parent, где хранится UUID родительского элемента. Если поле parent пустое, элемент считается корневым. Вес элемента (weight) определяет порядок отображения элементов внутри одного уровня иерархии.

Drupal использует систему производных (derivatives) для меню. Пользовательские ссылки из menu_link_content_data объединяются с системными ссылками из menu_tree для формирования полного дерева меню, которое кэшируется для повышения производительности.

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

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

SELECT m1.id, m1.title, m1.link__uri, m1.weight, m2.title as parent_title FROM menu_link_content_data m1 LEFT JOIN menu_link_content_data m2 ON m1.parent = CONCAT('menu_link_content:', m2.uuid) WHERE m1.menu_name = 'main' AND m1.enabled = 1 ORDER BY m1.weight ASC;

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

  • таблицу menu_tree,
    которая хранит системные определения ссылок меню
  • таблицу menu_tree_hash,
    которая используется для кэширования иерархии меню
  • таблицу menu_link_content_revision,
    которая хранит ревизии изменений ссылок меню
  • таблицу menu_link_content__menu_parent,
    которая хранит данные о родительских элементах меню
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить