Таблица menu_link_content_revision
Таблица menu_link_content_revision является частью системы ревизий Drupal и предназначена для хранения исторических версий пользовательских пунктов меню. Каждое изменение пункта меню создает новую запись в этой таблице, позволяя отслеживать историю изменений и при необходимости восстанавливать предыдущие версии.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
int |
Первичный ключ, уникальный идентификатор ревизии. Ссылается на id из таблицы menu_link_content_data.
|
revision_id |
int |
Уникальный идентификатор конкретной ревизии. Первичный ключ этой таблицы. |
langcode |
varchar(12) |
Код языка для многоязычной поддержки (например, 'en', 'ru'). |
enabled |
tinyint |
Флаг активности пункта меню: 1 - включен, 0 - отключен.
|
title |
varchar(255) |
Заголовок пункта меню, который отображается пользователям. |
description |
varchar(255) |
Описание пункта меню, которое может отображаться в виде всплывающей подсказки. |
menu_name |
varchar(255) |
Машинное имя меню, к которому принадлежит пункт (например, 'main', 'footer'). |
link__uri |
varchar(2048) |
URI ссылки пункта меню в формате 'internal:/path' или 'entity:node/1'. |
link__title |
varchar(255) |
Текст ссылки, который может отличаться от основного заголовка. |
link__options |
longblob |
Дополнительные опции ссылки в сериализованном формате (атрибуты, классы и т.д.). |
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 |
Флаг языка по умолчанию: 1 - язык по умолчанию, 0 - перевод.
|
revision_default |
tinyint |
Флаг, указывающий является ли эта ревизия текущей опубликованной версией. |
revision_translation_affected |
tinyint |
Флаг, указывающий затронута ли данная языковая версия ревизией. |
Как это работает
При создании или изменении пользовательского пункта меню через административный интерфейс Drupal, система создает новую запись в таблице menu_link_content_revision. Каждая ревизия сохраняет полное состояние пункта меню на момент изменения, включая заголовок, ссылку, вес и другие параметры.
Таблица тесно связана с основной таблицей menu_link_content_data, которая содержит текущие опубликованные версии пунктов меню. Поле id связывает ревизии с конкретным пунктом меню, а поле revision_id uniquely идентифицирует каждую версию.
Drupal использует эту систему ревизий для предоставления функциональности отмены изменений и просмотра истории. Администраторы могут просматривать предыдущие версии пунктов меню и восстанавливать их при необходимости.
Поле revision_default указывает какая из ревизий является текущей опубликованной версией. При создании новой ревизии предыдущая помечается как неактивная (revision_default = 0), а новая становится активной (revision_default = 1).
Пример SQL-запроса
Получить историю изменений конкретного пункта меню можно следующим запросом:
SELECT
m.id,
m.revision_id,
m.title,
m.link__uri,
m.changed,
FROM_UNIXTIME(m.changed) as changed_date,
m.revision_default
FROM menu_link_content_revision m
WHERE m.id = 123
ORDER BY m.revision_id DESC;
Смотрите также
-
таблицу
menu_link_content_data,
которая содержит текущие версии пунктов меню -
таблицу
menu_tree,
которая хранит иерархическую структуру меню -
таблицу
node_revision,
которая хранит ревизии материалов (нод) -
таблицу
node_field_revision,
которая хранит ревизии полей материалов