Таблица block_content
Таблица block_content служит основным репозиторием для хранения пользовательских блоков, созданных через административный интерфейс Drupal (Структура → Блоки макета → Пользовательские блоки). В отличие от блоков, предоставляемых модулями, эти блоки создаются и управляются непосредственно пользователем.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
id |
int |
Первичный ключ, уникальный числовой идентификатор блока. Автоматически инкрементируется. |
revision_id |
int |
Внешний ключ, ссылающийся на id в таблице block_content_revision. Указывает на текущую актуальную ревизию для этого блока.
|
type |
varchar(32) |
Идентификатор типа блока (Bundle). Ссылается на тип, определённый в block_content_type (например, 'basic', 'hero').
|
uuid |
varchar(128) |
Уникальный универсальный идентификатор (UUID) для данного блока. Остается неизменным на протяжении всего жизненного цикла блока, даже при экспорте конфигурации. |
langcode |
varchar(12) |
Код языка, к которому привязан контент блока (например, 'en', 'ru'). Определяет, в какой языковой версии отображается блок. |
Как это работает
Когда администратор создает новый пользовательский блок через интерфейс Drupal, в таблицу block_content вставляется новая запись. Поле type определяет, к какому типу блока (Bundle) он принадлежит, что влияет на набор доступных полей (например, только тело, тело + изображение).
Drupal использует систему ревизий для контентных сущностей, включая кастомные блоки. Таблица block_content хранит только метаинформацию о последней актуальной версии блока. Все исторические данные и непосредственно содержимое полей (тело, заголовок) хранятся в связанных таблицах: block_content_field_data (данные) и block_content_revision (ревизии).
После создания блока его можно разместить в любом регионе темы через административный интерфейс размещения блоков (Структура → Блоки макета). Информация о самом размещении (в каком регионе, на каких страницах) хранится в таблице block, которая ссылается на id из block_content.
Поле uuid критически важно для экспорта конфигурации. При развертывании изменений с одной среды на другую (например, с разработки на продакшн) UUID гарантирует, что система корректно идентифицирует и обновляет существующие блоки, а не создает дубликаты.
Пример SQL-запроса
Выбрать все базовые блоки на английском языке можно следующим запросом:
SELECT bc.id, bc.uuid, bcd.info, bcd.body_value
FROM block_content bc
INNER JOIN block_content_field_data bcd ON bc.id = bcd.id
WHERE bc.type = 'basic'
AND bc.langcode = 'en';
Смотрите также
-
таблицу
block_content_field_data,
которая хранит данные полей кастомных блоков -
таблицу
block_content_revision,
которая хранит ревизии кастомных блоков -
таблицу
block_content_type,
которая определяет типы кастомных блоков -
таблицу
block,
которая управляет размещением блоков в регионах темы