В предыдущих статьях я уже писал об отличиях между OpenCart 1.5.6 и OpenCart 2.0, а также о том как перенести модуль с Opencart 1.5.6 на OpenCart 2.0. В этой статье речь пойдет об отличиях между vQmod и OCMOD.  
 

Где что используется?

vQmod используется на OpenCart 1.5.х и является сторонней программой, которую перед использованием нужно скачать с репозитория разработчика и установить. 
OCMOD используется в OpenCart 2.0, он уже встроен в ядро, устанавливать его не нужно.
 

Установка модификаций

В OpenCart 2.0, модификации OCMOD устанавливается через админку, меню Установка расширений. На этой странице есть возможность загрузить как отдельный xml файл OCMOD так и архив с несколькими файлами: OCMOD, установка таблиц в базе данных, php код установки. 
После загрузки информация о новой модификации пишется в базу данных в таблицу modification.
И новая модификация доступна в меню Модификации
 

Страница модификаций

Опишу принцип работы с этой страницей, так как многие действия там не очевидны:
  • после загрузки модуля он не будет работать автоматически, для того, чтобы он заработал нужно нажать кнопку Обновить. Эта кнопка изменяет кеш модификаций, создает новые измененные файлы движка, которые будут загружаться системой вместо оригинальных. 
  • кнопка Очистить удаляет весь кеш модификаций, все файлы 
  • кнопка Удалить удаляет данную модификацию из базы (но не чистит кеш и эта модификация продолжает работать!!!)
 

Критика такого подхода

  • все модификации хранятся в базе что делает процесс исправления конфликтов очень сложным, а они скорее всего будут. Потому что в отличии от vQmod, где модификации хранятся в файлах и их легко изменить, базу данных изменить сложнее и нежелательно, остается каждый раз изменять и заново загружать эту модификацию. А для исправления конфликта иногда этот процесс придется повторить несколько раз. Для обычного пользователя это значительно добавит головной боли.
  • весь процесс местами непонятен. Разобраться обычному пользователю будет сложно - что куда загружать, после чего чистить кеш итд. 
  • процесс установки усложняется, так как вместо одного действия (переписать файл в нужную папку вместе с другими файлами модуля) получается несколько действий: сначала переписать файлы модуля, потом зайти в админку, выбрать нужный файл, загрузить его, обновить кеш 
  • если пользователь загрузить файл, а потом его удалит или потеряет то достать этот файл из базы и восстановить будет сложно. 
 

Плюсы такого подхода

  • безусловно плюсом является то, что пользователь видит из админки все модификации и может из админки их временно отключить или удалить. 
 

Режим для разработчиков

В OpenCart 2.0.1.1. для упрощения этого немного неудобного подхода добавлен режим для разработчиков. В этом режиме не нужно каждый раз загружать файл OCMOD, достаточно его записать в папку /system и назвать *.ocmod.xml и система после обновления кеша внесет изменения из этого файла в кеш. Правда, такой файл не появится на странице Модификаций.  
 

Файловая структура

  • кеш модификаций хранится в папке /system/modification. Файлы кеша точно наследуют структуру OpenCart, что упрощает работу с ними, в отличии от vQmod где кеш называется как-то так: vq2-admin_model_catalog_category.php и если много файлов то найти нужный затруднительно
  • в папке /system также находится файл modification.xml это главный файл, который подключает модификации к движку, почему бы код подключения не внести в сам код движка, если OCMOD уже в движке?
  • в этой же паке /system можно добавлять свои *.ocmod.xml файлы в режиме разработки
  • в /system/logs/ocmod.log находится лог OCMOD, он же отображается в админке на странице с модификациями. Лог очень неудобный, понять в нем что-то, особенно обычному пользователю очень сложно.
 

Отличия файлов vQmod и OCMOD

Атрибуты:
  • вместо id тепреь атрибут code, он обязательный, без него модификация не установится.
  • vqmver не нужен 
  • name
  • author
  • version
  • link - можно свой сайт вписать, удобно
Все атрибуты не обязательны, но крайне желательны так как они отображаются на странице модификаций. Модификацию без названия система устанавливает но на странице модификаций она отображается пустой строкой, то есть это ошибка, так быть не должно, возможно в следующих версиях появится проверка. 
 

Другие отличия

1. Позиция указывается не в элементе search

<search position="replace">

а в элементе add

<add position="replace">

 
2. Название файла указывается не через свойство name

<file name="catalog/controller/product/search.php">

а через path

<file path="catalog/controller/product/search.php">