Таблица block_theme
Таблица block_theme является системной таблицей Drupal, которая отслеживает, какие блоки зарегистрированы в каких темах. Это позволяет системе управлять видимостью и доступностью блоков в зависимости от активной темы оформления.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
module |
varchar(64) |
Название модуля, который предоставляет данный блок. Внешний ключ к таблице system.
|
delta |
varchar(32) |
Уникальный идентификатор блока в рамках модуля. Вместе с полем module образует уникальный ключ для идентификации блока.
|
theme |
varchar(64) |
Название темы, в которой данный блок доступен. Внешний ключ к таблице system.
|
Как это работает
Когда модуль определяет новые блоки через hook_block_info(), система автоматически регистрирует эти блоки для всех установленных тем в таблице block_theme. Это создает связь между блоком (определяемым парой module и delta) и темой (theme).
При смене активной темы Drupal использует эту таблицу для определения того, какие блоки доступны для размещения в регионах новой темы. Блоки, не зарегистрированные для текущей темы, не будут отображаться в интерфейсе управления блоками.
Эта система обеспечивает гибкость в управлении блоками для разных тем. Администратор может иметь различные наборы блоков для разных тем, даже если эти темы используются на одном сайте.
Пример SQL-запроса
Получить все блоки, доступные для определенной темы:
SELECT bt.module, bt.delta, bt.theme
FROM block_theme bt
WHERE bt.theme = 'bartik';
Найти все темы, в которых доступен конкретный блок:
SELECT bt.theme
FROM block_theme bt
WHERE bt.module = 'system' AND bt.delta = 'main-menu';
Смотрите также
-
таблицу
block,
которая хранит настройки размещения блоков -
таблицу
block_custom,
которая содержит пользовательские блоки -
таблицу
block_role,
которая управляет видимостью блоков для ролей -
таблицу
system,
которая содержит информацию о модулях и темах