Таблица menu_link_content_field_revision
Таблица menu_link_content_field_revision является таблицей ревизий для пользовательских пунктов меню в Drupal. Она содержит все версии данных полей для каждой сущности пункта меню, что позволяет отслеживать историю изменений и при необходимости возвращаться к предыдущим версиям.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
int |
Первичный ключ, идентификатор ревизии. Ссылается на menu_link_content.id.
|
revision_id |
int |
Уникальный идентификатор ревизии. Ссылается на menu_link_content_revision.revision_id.
|
langcode |
varchar(12) |
Код языка, для которого предназначена данная ревизия. |
enabled |
tinyint |
Флаг, указывающий, включен ли пункт меню (1) или отключен (0). |
title |
varchar(255) |
Заголовок пункта меню, который отображается пользователям. |
description |
varchar(255) |
Описание пункта меню, которое может отображаться в виде всплывающей подсказки. |
menu_name |
varchar(255) |
Машиночитаемое имя меню, в котором находится данный пункт (например, main, footer).
|
link__uri |
varchar(2048) |
URI ссылки пункта меню. Может быть внутренним (например, internal:/node/1) или внешним (https://example.com).
|
link__title |
varchar(255) |
Заголовок ссылки. Обычно совпадает с полем title.
|
link__options |
blob |
Сериализованный массив дополнительных опций для ссылки (атрибуты, параметры запроса и т.д.). |
external |
tinyint |
Флаг, указывающий, является ли ссылка внешней (1) или внутренней (0). |
rediscover |
tinyint |
Флаг, указывающий, должна ли система пытаться "переоткрыть" ссылку, если целевой путь изменился. |
weight |
int |
Вес пункта меню, определяющий его положение относительно других пунктов в том же меню и уровне вложенности. |
expanded |
tinyint |
Флаг, указывающий, должны ли дочерние элементы этого пункта меню быть развернуты по умолчанию. |
parent |
varchar(255) |
Идентификатор родительского пункта меню в формате menu_link_content:uuid.
|
Как это работает
Когда создается новый пользовательский пункт меню через административный интерфейс Drupal, в таблице menu_link_content создается основная запись, а в menu_link_content_field_revision создается первая ревизия с данными полей.
При каждом изменении полей пункта меню (например, заголовка, ссылки, веса) создается новая ревизия. Все предыдущие версии сохраняются в этой таблице, что позволяет системе отслеживать историю изменений и предоставлять функционал отката к предыдущим версиям.
Для каждого языка сайта создаются отдельные ревизии, что позволяет управлять многоязычным контентом пунктов меню. Поле langcode определяет, для какого языка предназначена конкретная ревизия.
Таблица тесно связана с menu_link_content_revision, которая хранит метаданные ревизий, в то время как menu_link_content_field_revision хранит непосредственно данные полей.
Пример SQL-запроса
Получить историю изменений заголовка для конкретного пункта меню можно следующим запросом:
SELECT mf.revision_id, mf.title, mf.langcode, mr.revision_created, mu.name
FROM menu_link_content_field_revision mf
JOIN menu_link_content_revision mr ON mf.revision_id = mr.revision_id
LEFT JOIN users_field_data mu ON mr.revision_user = mu.uid
WHERE mf.id = 123
ORDER BY mr.revision_created DESC;
Смотрите также
-
таблицу
menu_link_content,
которая хранит основные данные пунктов меню -
таблицу
menu_link_content_revision,
которая хранит метаданные ревизий пунктов меню -
таблицу
menu_tree,
которая хранит иерархическую структуру меню -
таблицу
menu_tree_hash,
которая хранит хэши для оптимизации работы с меню