Системы модификации 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?


person Arslan Khan    schedule 15.08.2020    source источник


Ответы (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. Вставьте файл в папку / system и очистите кеш.
  2. В панели администратора в Расширение - Установщик установите файл .ocmod.xml и очистите кеш. В этом случае лучше обойтись. Вы можете найти свои файлы OCMOD в Расширение - Расширение. Это не файлы, а запись в базе данных. Чтобы отредактировать их после установки, вам может потребоваться Редактор OCMOD.

В некоторых случаях вы могли увидеть архив .ocmod.zip с install.xml и папкой upload. Это может быть модуль с файлом OCMOD и дополнительными файлами, скомпилированный в едином инсталляторе.

ОБ ИЗМЕНЕНИЯХ

Теперь, когда у нас есть файл с установленными операциями .ocmod.xml и очищен кеш - система создает копии основных файлов и хранит их в /system/storage/modifications/.... Если взять код из примера - вы найдете файл /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 могут остаться нетронутыми. Но если они пропали - просто установите их заново (перед тем как куда-нибудь их сохранить).

P.S. Различные файлы .ocmod.xml могут влиять на один и тот же файл ядра. Это абсолютно нормально.

person focus.style    schedule 16.08.2020