НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
111 of 152 menu

Таблица oc_modification

Таблица oc_modification является центральным хранилищем для всех модификаторов, установленных в системе OpenCart. Модификаторы - это специальные XML-файлы (с расширением .ocmod.xml), которые инструктируют движок, как нужно изменить исходные PHP, TPL, JS или CSS файлы ядра и модулей, не затрагивая их напрямую. Этот механизм обеспечивает легкость обновления системы.

Поля

Поле Тип данных Описание
modification_id int Уникальный автоматически инкрементируемый идентификатор модификатора (первичный ключ).
extension_install_id int Ссылка на запись в таблице oc_extension_install. Указывает, в рамках установки какого расширения был добавлен данный модификатор. Может быть 0, если модификатор был установлен вручную.
name varchar(64) Название модификатора. Обычно соответствует атрибуту name из тега в XML-файле.
code varchar(64) Уникальный код модификатора. Должен совпадать с именем XML-файла (без расширения .ocmod.xml). Например, для файла my_cool_mod.ocmod.xml это поле будет содержать значение my_cool_mod. Это основной идентификатор, по которому система находит модификатор.
author varchar(64) Имя автора модификатора. Берется из атрибута author в XML-файле.
version varchar(32) Версия модификатора. Берется из атрибута version в XML-файле. Используется для контроля обновлений.
link varchar(255) Ссылка на сайт автора или страницу модификатора.
xml mediumtext Самое важное поле. Содержит полный XML-код модификатора, который был загружен через установщик расширений или вручную. Именно эти данные система читает и обрабатывает при каждой модификации кода.
status tinyint(1) Статус модификатора: 1 - включен, 0 - выключен. Выключенные модификаторы не применяются к коду сайта.
date_added datetime Дата и время добавления модификатора в базу данных.

Как это работает

Когда вы загружаете файл .ocmod.xml через раздел админ-панели "Модификаторы" (или он устанавливается вместе с расширением), его содержимое парсится и записывается в таблицу oc_modification. Поле xml содержит точную копию исходного XML-файла.

При каждой загрузке любой страницы магазина или админ-панели (если кэш модификаторов очищен или устарел) система OpenCart выполняет следующий процесс:

1. Из таблицы oc_modification выбираются все записи со статусом status = 1.

2. Для каждой включенной записи парсится XML из поля xml.

3. На основе инструкций в XML (поиск и замена, добавление кода до/после определенного блока и т.д.) система создает виртуальную, модифицированную версию исходных файлов.

4. Результат применения всех модификаторов кэшируется в папке system/storage/cache, чтобы не выполнять ресурсоемкий парсинг XML при каждом запросе.

Таким образом, исходные файлы движка остаются нетронутыми. Все изменения "накладываются" виртуально на лету, что является главным преимуществом системы OCMod.

Пример SQL-запроса

Получить список всех активных модификаторов с их версиями можно следующим запросом:

SELECT name, code, author, version, date_added FROM oc_modification WHERE status = 1 ORDER BY name;

Просмотреть содержимое XML конкретного модификатора:

SELECT xml FROM oc_modification WHERE code = 'my_custom_mod';

Смотрите также

  • таблицу oc_setting,
    которая хранит настройки системы и модулей
  • таблицу oc_extension_install,
    которая хранит историю установленных расширений
  • таблицу oc_module,
    которая управляет модулями на layout'ах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить