Системы модификации OpenCart OCMOD и VQMOD
Я новичок в системах OpenCart OCMOD и VQMOD. Так что мне нужна помощь. Мои вопросы есть.
Говорят, что OCMOD - это система по умолчанию OC2+. Также сказано, что мы должны сами написать наш OCMOD. Что это значит? Если OCMOD поставляется с OC2+. Тогда зачем нам писать самому? Если OCMOD по умолчанию является частью OC+2. Тогда где его найти в OC 3.0.2.0?
Как использовать OCMOD для внесения изменений в OpenCart, не затрагивая файлы ядра?
Как удалить изменения, уже сделанные без установки OCMOD или VQMOD в файлах ядра OpenCart после установки новых OCMOD.zip или OCMOD.xml и VQMOD.zip или VQMOD.xml, не удаляя эффект этих изменений.
Как восстановить изменения, сделанные в OpenCart в обновленной версии, с помощью OCMOD или VQMOD?
Если установлен новый OCMOD или VQMOD, удаляются ли все изменения, уже сделанные в основных файлах OpenCart?
1 ответ
В первый раз мы говорили об общей логике OCMOD и VQMOD. На этот раз я опишу опыт работы с OCMOD (VQMOD в основном работает так же и устарел, поэтому я его опущу). Сам OCMOD - это движок (встроенный в OpenCart с версии 2.X). Нам нужно поместить в этот движок инструкцию, чтобы он работал. Файлы инструкций имеют формат XML и определенные имена, например my_file.ocmod.xml, где требуется окончание .ocmod.xml.
Вот пример файла OCMOD
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>My OCMOD file</name>
<code>my-ocmod</code>
<version>1.0</version>
<author>Me</author>
<link>http://mywebsite.com</link>
<file path="catalog/view/theme/default/template/common/header.twig">
<operation>
<search><![CDATA[<div id="top-links" class="nav pull-right">]]></search>
<add position="before"><![CDATA[
<div>Add Something</div>
]]></add>
</operation>
</file>
<file path="catalog/controller/common/header.php">
<operation>
<search><![CDATA[$data['name'] = $this->config->get('config_name');]]></search>
<add position="replace"><![CDATA[
$data['name'] = $this->config->get('config_name') . $this->document->getDescription();
]]></add>
</operation>
</file>
</modification>
Здесь у нас есть 2 инструкции (операции) в 2 разных файлах (мы также можем реализовать несколько операций в одном файле). В процессе работы мы ищем строку кода в исходном файле ядра и добавляем ее до / после или заменяем на код вadd
тег. Вот документация по файлу OCMOD, которая может помочь при создании файла .ocmod.xml.
Когда у вас есть файл .ocmod.xml - его нужно установить. Это можно сделать двумя разными способами:
- Вставьте файл в / системную папку и очистите кеш.
- В админпанели в Extension - Installer установите файл .ocmod.xml и очистите кеш. В этом случае лучше обойтись. Вы можете найти свои файлы OCMOD в Расширение - Расширение. Это не файлы, а запись в базе данных. Для их редактирования после установки вам может потребоваться редактор OCMOD.
В некоторых случаях вы могли увидеть архив .ocmod.zip с install.xml и папкой для загрузки. Это может быть модуль с файлом OCMOD и дополнительными файлами, скомпилированный в едином инсталляторе.
ОБ ИЗМЕНЕНИЯХ
Теперь, когда у нас есть файл с операциями .ocmod.xml установлены и кэш очищается - система создает основные файлы копию и держать их в / системах / хранение / модификация /.... Если взять код из примера - вы найдете файл /system/storage/modifications/catalog/view/theme/default/template/common/header.twig с реализованными изменениями из .ocmod.xml.
Ну это все. OCMOD работает так просто. Как только вы установили какой- либо файл .ocmod.xml - этот файл остается в OpenCart, и операции выполняются после каждой очистки кеша. Вы внесли изменения в файл .ocmod.xml - очистите кеш. Установил новый .ocmod.xml - очистить кеш. Удалил какой-то старый .ocmod.xml - очистите кеш.
После обновления версии OpenCart файлы OCMOD могут остаться нетронутыми. Но если они ушли - просто установите их заново (перед тем как куда-нибудь их сохранить).
PS Разные файлы .ocmod.xml могут влиять на один и тот же файл ядра. Это абсолютно нормально.