Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
109 of 152 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Таблица 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,
    которая содержит список установленных расширений