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

Таблица block_content_field_data

Таблица block_content_field_data является одной из ключевых таблиц для хранения данных сущностей пользовательских блоков в Drupal. В отличие от базовой таблицы block_content, которая хранит техническую информацию, эта таблица содержит переведенный контент, информацию о ревизиях, а также данные, необходимые для отображения блока на сайте (статус публикации, мета-информация). Данные в эту таблицу попадают через механизм деривации полей (field API) при сохранении сущности.

Поля

Поле Тип данных Описание
id int Первичный ключ. Уникальный идентификатор (ID) сущности пользовательского блока. Ссылается на block_content.id.
revision_id int Идентификатор текущей ревизии (версии) для этой сущности. Ссылается на block_content_revision.revision_id.
type varchar(32) Машинное имя типа блока (bundle), к которому принадлежит данная сущность. Определяет, какие поля attached к этому блоку. Ссылается на block_content_type.id.
langcode varchar(12) Код языка, для которого представлены данные в этой строке. Одна сущность может иметь несколько записей в этой таблице для каждого из поддерживаемых языков.
status tinyint Статус публикации сущности. 1 - опубликовано, 0 - не опубликовано. Неопубликованные блоки обычно не отображаются на сайте.
info varchar(255) Административное описание или название блока. Это то самое название, которое задается при создании блока и отображается в интерфейсе администратора.
changed int Метка времени (Unix timestamp) последнего изменения сущности.
default_langcode tinyint Флаг, указывающий, является ли данный язык языком по умолчанию для этой сущности. 1 - да, 0 - нет.
revision_translation_affected tinyint Флаг, используемый системой ревизий и переводов Drupal для отслеживания того, была ли затронута данная языковая версия в конкретной ревизии.

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

Когда создается или редактируется пользовательский блок через административную панель Drupal (например, тип блока "Базовый" или кастомный тип), данные сохраняются в несколько таблиц. Базовая информация (ID, UUID, тип) записывается в block_content, а данные полей (включая переведенные) - в block_content_field_data и соответствующие таблицы полей (например, block_content__body).

Таблица block_content_field_data денормализована и оптимизирована для быстрого извлечения данных, необходимых для построения списков сущностей (например, на странице /admin/content/block) и для условий отображения. При выполнении запросов к сущностям блоков, особенно с фильтрацией по статусу или языку, JOIN происходит именно с этой таблицей.

Наличие поля langcode означает, что для каждого перевода одной и той же сущности блока в таблице будет создана отдельная запись. Это является частью архитектуры многоязычности в Drupal.

Важно различать сущность блока (block_content) и его размещение в регионах темы. Размещение блока на конкретной странице и в конкретном регионе управляется через конфигурацию плагина Блока в Drupal, которая хранится в таблице config, а связь между конфигурацией и сущностью устанавливается через UUID сущности блока.

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

Выбрать все опубликованные базовые блоки на английском языке:

SELECT id, info, changed FROM block_content_field_data WHERE type = 'basic' AND status = 1 AND langcode = 'en';

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

  • таблицу block_content,
    которая хранит основную информацию о сущностях блоков
  • таблицу block_content_revision,
    которая хранит данные ревизий пользовательских блоков
  • таблицу block_content__body,
    которая хранит данные поля "Тело" для блоков
  • таблицу block_content_field_revision,
    которая хранит данные ревизий полей для блоков
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить