Таблица oc_module
Таблица oc_module является одной из ключевых таблиц для управления функциональностью магазина. В ней хранятся все настройки модулей, которые можно добавлять через административную панель в разделе "Модули / Расширения". Каждая запись в таблице представляет собой конкретный экземпляр модуля с его индивидуальными параметрами.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
module_id |
int |
Уникальный идентификатор экземпляра модуля. Автоинкрементное поле. |
name |
varchar(64) |
Название экземпляра модуля, которое задается администратором при его настройке (например, "Слайдер на главной" или "Популярные товары в категориях"). |
code |
varchar(64) |
Системный код типа модуля. Определяет, к какому модулю относятся настройки (например, banner, carousel, featured, html). Связь с файлами модуля в директории catalog/controller/extension/module.
|
setting |
text |
Основное поле, содержащее все настройки модуля в сериализованном виде (функция serialize() в PHP). Здесь хранятся параметры, такие как лимит товаров, ширина/высота изображения, ID баннера и т.д.
|
Как это работает
Когда администратор добавляет новый модуль через раздел "Расширения → Модули", выбирает его тип (например, "Слайдер") и настраивает его параметры, в таблицу oc_module добавляется новая запись. Поле code указывает на системное имя модуля (например, banner), а поле setting сохраняет все заданные настройки в сериализованном формате.
Чтобы вывести модуль на странице, его необходимо добавить в макет в разделе "Дизайн → Макеты". При этом система связывает module_id с конкретной позицией (layout_id) и маршрутом (route) страницы в таблице oc_layout_module.
При отображении страницы система OpenCart проверяет макет, находит все привязанные к нему module_id, загружает их настройки из таблицы oc_module, десериализует (unserialize) данные из поля setting и передает их в соответствующий контроллер модуля (catalog/controller/extension/module/{code}.php) для формирования HTML-вывода.
Один и тот же тип модуля (с одинаковым code) может иметь несколько экземпляров в этой таблице с разными настройками. Это позволяет, например, создать несколько разных слайдеров или блоков с товарами для разных разделов сайта.
Пример SQL-запроса
Получить список всех модулей типа "Рекомендуемые" (featured) с их настройками можно следующим запросом:
SELECT module_id, name, setting
FROM oc_module
WHERE code = 'featured';
Просмотреть, в каких позициях макета используется конкретный модуль:
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.module_id = 15;
Смотрите также
-
таблицу
oc_layout_module,
которая связывает модули с макетами страниц -
таблицу
oc_layout,
которая хранит схемы страниц (макеты) -
таблицу
oc_extension,
которая содержит список установленных расширений