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

Таблица 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,
    которая имеет схожую структуру для хранения тела материалов (нод)
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить