Таблица oc_information_to_layout
Таблица oc_information_to_layout является связующей таблицей в системе OpenCart, которая определяет, какой макет (шаблон отображения) должен использоваться для конкретной информационной страницы в зависимости от магазина. Это особенно важно в мультимагазинных конфигурациях, где разные магазины могут требовать различного оформления для одних и тех же информационных материалов.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
information_id |
int |
Идентификатор информационной страницы. Внешний ключ, ссылается на таблицу oc_information.
|
store_id |
int |
Идентификатор магазина. Внешний ключ, ссылается на таблицу oc_store. Значение 0 означает, что правило применяется ко всем магазинам по умолчанию.
|
layout_id |
int |
Идентификатор макета (шаблона отображения). Внешний ключ, ссылается на таблицу oc_layout.
|
Как это работает
В админ-панели OpenCart, при редактировании информационной страницы (например, "О нас", "Доставка и оплата"), в разделе "Данные" есть вкладка "Макет". На этой вкладке можно указать, какой макет должен использоваться для отображения данной страницы в разных магазинах.
При открытии информационной страницы на фронтенде, система ищет в таблице oc_information_to_layout запись с information_id текущей страницы и store_id текущего магазина. Если такая запись найдена, используется указанный в ней макет. Если для конкретного магазина запись не найдена, система ищет запись с store_id = 0 (макет по умолчанию для всех магазинов).
Эта система приоритетов позволяет гибко настраивать отображение контента: установить общий макет для всех магазинов, но переопределить его для конкретного магазина при необходимости.
Пример SQL-запроса
Получить все привязки макетов для информационной страницы с ID 5:
SELECT itl.*, i.title as information_title, s.name as store_name, l.name as layout_name
FROM oc_information_to_layout itl
LEFT JOIN oc_information i ON (itl.information_id = i.information_id)
LEFT JOIN oc_store s ON (itl.store_id = s.store_id)
LEFT JOIN oc_layout l ON (itl.layout_id = l.layout_id)
WHERE itl.information_id = 5;
Найти какой макет используется для страницы "О нас" (information_id = 3) в магазине с ID 1:
SELECT l.name
FROM oc_information_to_layout itl
JOIN oc_layout l ON (itl.layout_id = l.layout_id)
WHERE itl.information_id = 3 AND itl.store_id = 1;
Смотрите также
-
таблицу
oc_information,
которая хранит основные данные информационных страниц -
таблицу
oc_layout,
которая содержит определения макетов -
таблицу
oc_store,
которая хранит данные о магазинах в мультимагазинной конфигурации -
таблицу
oc_category_to_layout,
которая реализует аналогичную логику для категорий товаров