Таблица oc_layout
Таблица oc_layout является системной таблицей OpenCart, которая хранит определения макетов (схем) страниц. Каждый макет определяет, в каких позициях и какие модули будут отображаться на страницах, которые используют этот макет.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
layout_id |
int |
Уникальный идентификатор макета (схемы). Автоинкрементное поле. |
name |
varchar(64) |
Название макета на основном языке магазина (например, "Home", "Product", "Category"). |
Как это работает
Система макетов в OpenCart позволяет гибко управлять расположением модулей на разных типах страниц. Каждому макету соответствует определенный PHP-файл шаблона в директории catalog/view/theme/[ваша_тема]/template/common/.
Связь между макетами и модулями устанавливается через таблицу oc_layout_module, где для каждого макета указывается, какие модули и в каких позициях должны отображаться.
Связь между макетами и конкретными страницами (товарами, категориями, производителями, информационными страницами) устанавливается через соответствующие таблицы:
• oc_product_to_layout - для товаров
• oc_category_to_layout - для категорий
• oc_manufacturer_to_layout - для производителей
• oc_information_to_layout - для информационных страниц
Когда пользователь открывает страницу, система определяет, какой макет должен быть использован, и затем загружает все модули, привязанные к этому макету через таблицу oc_layout_module.
Пример SQL-запроса
Посмотреть все доступные макеты и количество модулей в каждом можно следующим запросом:
SELECT l.layout_id, l.name, COUNT(lm.layout_module_id) as module_count
FROM oc_layout l
LEFT JOIN oc_layout_module lm ON (l.layout_id = lm.layout_id)
GROUP BY l.layout_id
ORDER BY l.name;
Найти все товары, которые используют определенный макет:
SELECT p.product_id, pd.name as product_name, l.name as layout_name
FROM oc_product p
LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN oc_product_to_layout ptl ON (p.product_id = ptl.product_id)
LEFT JOIN oc_layout l ON (ptl.layout_id = l.layout_id)
WHERE l.layout_id = 1;
Смотрите также
-
таблицу
oc_layout_module,
которая связывает макеты с модулями -
таблицу
oc_module,
которая хранит настройки модулей -
таблицу
oc_product_to_layout,
которая связывает товары с макетами -
таблицу
oc_category_to_layout,
которая связывает категории с макетами