Таблица oc_category_to_layout
Таблица oc_category_to_layout является связующей таблицей в OpenCart. Она определяет, какой макет (шаблон) страницы должен использоваться для отображения конкретной категории товаров. Это позволяет администратору назначить для отдельных категорий уникальный дизайн, отличающийся от стандартного макета каталога.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
category_id |
int |
Идентификатор категории. Внешний ключ, который ссылается на таблицу oc_category.
|
store_id |
int |
Идентификатор магазина (в мультисторе). Внешний ключ, который ссылается на таблицу oc_store. Для односторовых установок обычно равен 0.
|
layout_id |
int |
Идентификатор макета (layout). Внешний ключ, который ссылается на таблицу oc_layout.
|
Как это работает
В админ-панели OpenCart, при редактировании категории, на вкладке "Дизайн" администратор может выбрать макет, который будет использоваться для отображения страницы этой категории. При сохранении категории система создает или обновляет запись в таблице oc_category_to_layout.
Когда пользователь открывает страницу категории на сайте, система ищет в этой таблице запись с category_id текущей категории и store_id текущего магазина. Если запись найдена, то для отображения страницы используется макет с layout_id из этой записи. Если запись не найдена, то используется макет по умолчанию для страниц категорий (обычно это макет с названием "Category").
Эта система обеспечивает гибкость в дизайне: разные категории могут иметь совершенно разное оформление. Например, для категории "Акции" можно использовать макет с широкими баннерами, а для категории "Электроника" - макет с техническими спецификациями в боковой колонке.
Важно отметить, что данная таблица не содержит самих данных о макетах или категориях, а лишь связывает их идентификаторы. Сами макеты определяются в таблице oc_layout, а их Route-привязки - в таблице oc_layout_route.
Пример SQL-запроса
Получить все назначенные макеты для категорий можно следующим запросом:
SELECT ct.*, c.name as category_name, l.name as layout_name
FROM oc_category_to_layout ct
LEFT JOIN oc_category c ON (ct.category_id = c.category_id)
LEFT JOIN oc_layout l ON (ct.layout_id = l.layout_id)
ORDER BY ct.category_id;
Смотрите также
-
таблицу
oc_category,
которая хранит основную информацию о категориях -
таблицу
oc_layout,
которая определяет доступные макеты страниц -
таблицу
oc_layout_route,
которая задает правила применения макетов по умолчанию -
таблицу
oc_product_to_layout,
которая выполняет аналогичную функцию для товаров