Устройство Opencart 2.0 (OC2): работа инсталлятора, модификаций и модулей

Мда… Синтаксические ошибки на этапе формирования модификации запросто укладывают весь сайт. OCMOD формирует файл с ошибкой, дальше ВСЁ… ФИНИШ. Пока не пофискишь - не поедет. Учитывая, что синтаксическая ошибка может запросто возникнуть при конфликне модулей, система будет слабо автоматизируемой. Должен работать квалифицированный админ. Сценарий примерно такой:

  • ставим модификацию
  • обновляем кэш
  • если система загнулась:
    • удаляем system/modification/*
    • заходим в систему как админ и удаляем проблемную модификацию
    • перегенерируем кэш
    • пишем рекламацию

Чем модификация отличается от инсталлятора

Модификация работает только в каталоге system/modification . Ей не нужны права на запись по всему движку: это инсталлеру надо. И достигается через фтп-функции и фтп-пользователя.

Модификация исходных файлов не меняет. Результат работы записывается в system/modification .

Что такое инсталлятор, модификация и модуль. Их взаимодействие

По большому счёту, в системе модуля нет вообще. Причина в том, что в принципе отсутствует интерфейс взаимодействия внешнего кода с ядром. Некоторые зачатки появились во второй версии с внесением events. И всё. В остальном - есть некоторое изменение кода, состоящее из новых файлов и изменения старых, а также механизм настройки параметров и визуальной привязки кода к layout. Вот это всё горделиво названо словом “модуль”. И дальше есть инсталлятор, который вносит новые файлы в систему и регистрирует xml для внесения изменений в существующие файлы. А модификация просто реализует эти изменения. Вот и всё.

Процедура инсталляции размещает по местам новые файлы и записывает в таблицу XML. Кроме того, она исполняет скрипты install.sql & install.php . Больше она не делает ничего.

Модификация при нажатии кнопки “Refresh”:

  • очищает кэш модификаций system/modification/*
  • ищет system/modification.xml и исполняет его
  • ищет system/*.ocmod.xml и исполняет их. Это “форточка” для девелопера.
  • последовательно извлекает из таблицы oc_modification все xml, запись за записью, и создаёт новый кэш из модифицированных файлов.

Всё