Таблица block_content__body
Таблица block_content__body является де-нормализованной таблицей, связанной с основным типом данных block_content. Она хранит содержимое поля типа Body для пользовательских блоков, созданных через интерфейс Drupal. Это поле часто используется для основного HTML/текстового наполнения блока.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
bundle |
varchar(128) |
Тип (Bundle) пользовательского блока (например, basic, hero). Определяет, к какой конфигурации типа блока относится данная запись. |
deleted |
tinyint |
Флаг удаления. Принимает значение 0 для активных записей и 1 для удаленных. Удаленные записи сохраняются для целей ревизионирования и могут быть окончательно удалены при очистке.
|
entity_id |
int |
Уникальный идентификатор сущности пользовательского блока. Внешний ключ, который связывает это значение поля с основной сущностью в таблице block_content.
|
revision_id |
int |
Уникальный идентификатор ревизии сущности пользовательского блока. Внешний ключ, который связывает это значение поля с конкретной ревизией в таблице block_content_revision.
|
langcode |
varchar(32) |
Код языка, для которого предназначено это значение поля. Позволяет хранить переводы содержимого блока для разных языков. |
delta |
int |
Порядковый номер (дельта) значения для данного поля и сущности. Поскольку поле Body обычно допускает только одно значение, delta чаще всего равен 0.
|
body_value |
longtext |
Основное содержимое поля. Здесь хранится сам текст/HTML блока. |
body_summary |
longtext |
Необязательное краткое изложение (summary) содержимого. Может быть заполнено вручную или сгенерировано автоматически при использовании функции "Разделить summary". |
body_format |
varchar(255) |
Идентификатор формата текстового фильтра (например, basic_html, full_html). Определяет, какие фильтры и обработчики будут применены к содержимому при выводе на страницу. Ссылается на конфигурацию формата текста. |
Как это работает
Drupal использует архитектуру, основанную на сущностях. Когда создается новый пользовательский блок и для него заполняется поле Body, в основную таблицу block_content записывается базовая информация о сущности (ID, тип, UUID и т.д.), а специфичные данные для поля Body сохраняются в таблице block_content__body. Связь между ними осуществляется через поле entity_id.
Если для сайта включена поддержка многоязычности, для одного и того же блока (entity_id) могут существовать несколько записей в этой таблице с разными значениями langcode, содержащими переводы текста.
Если для типа блока включено управление ревизиями, при каждом сохранении изменений блока создается новая запись в таблице ревизий block_content_revision и соответствующая ей запись в block_content__body с новым revision_id. Это позволяет отслеживать историю изменений содержимого блока и при необходимости откатываться к предыдущим версиям.
При выводе блока на страницу Drupal объединяет данные из основной таблицы и всех связанных таблиц полей (таких как block_content__body) в единый объект сущности, который затем передается в систему тем и выводится.
Пример SQL-запроса
Выбрать основное содержимое и формат для всех активных блоков базового типа можно следующим запросом:
SELECT bc.id, bc.info, bcb.body_value, bcb.body_format
FROM block_content__body bcb
INNER JOIN block_content bc ON bcb.entity_id = bc.id
WHERE bcb.bundle = 'basic'
AND bcb.deleted = 0;
Смотрите также
-
таблицу
block_content,
которая хранит основную информацию о пользовательских блоках -
таблицу
block_content_revision,
которая хранит ревизии пользовательских блоков -
таблицу
block_content_field_data,
которая хранит данные полей для перевода пользовательских блоков -
таблицу
node__body,
которая имеет схожую структуру для хранения тела материалов (нод)