Таблица 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'ах