Системы модификации OpenCart OCMOD и VQMOD

Я новичок в системах OpenCart OCMOD и VQMOD. Так что мне нужна помощь. Мои вопросы есть.

  1. Говорят, что OCMOD - это система по умолчанию OC2+. Также сказано, что мы должны сами написать наш OCMOD. Что это значит? Если OCMOD поставляется с OC2+. Тогда зачем нам писать самому? Если OCMOD по умолчанию является частью OC+2. Тогда где его найти в OC 3.0.2.0?

  2. Как использовать OCMOD для внесения изменений в OpenCart, не затрагивая файлы ядра?

  3. Как удалить изменения, уже сделанные без установки OCMOD или VQMOD в файлах ядра OpenCart после установки новых OCMOD.zip или OCMOD.xml и VQMOD.zip или VQMOD.xml, не удаляя эффект этих изменений.

  4. Как восстановить изменения, сделанные в OpenCart в обновленной версии, с помощью OCMOD или VQMOD?

  5. Если установлен новый 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 - его нужно установить. Это можно сделать двумя разными способами:

  1. Вставьте файл в / системную папку и очистите кеш.
  2. В админпанели в 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 могут влиять на один и тот же файл ядра. Это абсолютно нормально.

Другие вопросы по тегам