Таблица oc_layout_module
Таблица oc_layout_module является связующей таблицей в OpenCart. Она определяет, какие модули выводятся на каких макетах (страницах), в каких позициях шаблона и в каком порядке. Эта таблица заполняется автоматически при настройке модуля через административную панель, когда вы выбираете макеты для его отображения.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
layout_module_id |
int |
Уникальный идентификатор связи макета и модуля (AUTO_INCREMENT). |
layout_id |
int |
Внешний ключ, который связывает запись с конкретным макетом. Ссылается на oc_layout.
|
code |
varchar(64) |
Системный код модуля. Содержит путь к модулю в формате module/название_модуля (например, module/carousel) или код модуля, установленного через расширения (например, featured).
|
position |
varchar(14) |
Позиция в шаблоне, где должен быть выведен модуль. Распространенные значения: content_top, content_bottom, column_left, column_right.
|
sort_order |
int |
Порядок сортировки для вывода модулей внутри одной и той же позиции. Модули выводятся в порядке возрастания этого значения. |
Как это работает
В админ-панели, при редактировании модуля, администратор выбирает макеты страниц, на которых этот модуль должен отображаться, а также указывает его позицию и порядок.
Например, чтобы вывести модуль "Карусель" в правой колонке на главной странице, в таблицу oc_layout_module будет добавлена запись, где layout_id соответствует макету "Главная", code равен module/carousel, position равен column_right, а sort_order определяет его положение среди других модулей в этой же колонке.
Когда пользователь открывает страницу на сайте, система OpenCart определяет, какой макет к ней относится. Затем она ищет в oc_layout_module все модули, привязанные к этому макету (layout_id), группирует их по позициям (position) и выводит, сортируя по sort_order.
Один и тот же модуль может быть привязан к нескольким макетам, создавая несколько записей в этой таблице с разными layout_id.
Пример SQL-запроса
Посмотреть все модули, привязанные к макету с ID 5, можно следующим запросом:
SELECT lm.*, l.name as layout_name
FROM oc_layout_module lm
LEFT JOIN oc_layout l ON (lm.layout_id = l.layout_id)
WHERE lm.layout_id = 5
ORDER BY lm.position, lm.sort_order;
Смотрите также
-
таблицу
oc_layout,
которая хранит информацию о макетах страниц -
таблицу
oc_module,
которая хранит настройки экземпляров модулей -
таблицу
oc_setting,
которая также хранит настройки модулей для мультисторе