OpenCart Club

Разработка под Opencart

OCMOD opencart создание модуля.

С версии opencart 2 в поставке CMS уже встроена система модификации файлов OCMOD. Она пришла на замену VQMOD и имеет некоторые отличия как в принципах формирования файлов xml так и в установке файлов модификаций. Очень большим плюсов OCMOD является тот, что он уже встроен в opencart и не нуждается в дополнительной установке.

Структура папок модуля для OCMOD

Весь модуль должен быть упакаван в zip архів и иметь название xxx.ocmod.zip где ххх – любое слово латиницей.

Внутренняя структура архива:

  • папка

    upload

     - обязательная папка в которой находяться файлі модуля с подпапками
    • папка admin - папка с файлами модуля
    • папка catalog - папка с файлами модуля
    • и так далее - другие папки
  • файл

    instal.xml

     - файл с изменениями которые нужно внести в файлы ядра opencart
  • файл

    instal.php

     - php файл с функциями которые надо выполнить во время установки модуля
  • файл

    instal.sql

     - sql файл с командами insert, update или delete которые надо выполнить во время установки модуля

Подробнее о структуре файла instal.xml

   Данный файл отвечает за внесение изменений в любые файлы ядра движка, при этом сами файлы не изменяются, а делается их копия с внесенными изменениями. Данные копии используются при загрузке сайта вместо стандартных.

   Просмотреть все созданные файлы можно в папке system/storage/modification в данной папке повторяется полная структура папок ядра где размещается модифицированый файл.

Поговорим о самой структуре файла.

Пример файла:

[php]<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
<name>Modification Default</name>
<version>1.0</version>
<author>OpenCart Ltd</author>
<link>http://www.opencart.com</link>
<file path=”catalog/controller/common/home.php”>
<operation>
<search><![CDATA[
$data[‘column_left’] = $this->load->controller(‘common/column_left’);
]]></search>
<add position=”replace”><![CDATA[
test123
]]></add>
</operation>
</file>
</modification>[/php]

Атрибуты:

“name”

- название модификатора должно быть уникалное в разрезе всех установленных модификаторов. Обязательно к заполнению.

“version”

- версия вашего модификатора/модуля. Не обязательно но желательно к заполнению.

“author”

 - автор модуля/модификатора.Не обязательно но желательно к заполнению.

“link”

 - линк на любой сайт. Можете указать свой сайт ии оставить пустым.

Теги:

file

- в данном теге прописывается путь и название файла в который мы будем вносить изменения.

[php]<file path=”catalog/controller/common/home.php”>[/php]

изменения будут вноситься в файл

home.php который находится в папке catalog/controller/common

[php]<file path=”catalog/controller/{common,product}/home.php”>[/php]

 

поиск файла home.php будет происходить уже в двух папках в 

catalog/controller/common и

catalog/controller/product.
То есть можно укозать несколько папок для поиска файла. Для єтого нужно просто указать все папки между двух "{}" через запятую.
Если указать путь к файлу так:

[php]<file path=”catalog/controller/*/home.php”>[/php]

То поиск файла home.php будет происходить во всех подпапках папки controller.

Так же есть возможность задать несколько файлов в которые мы хотим внести изменения.

Для нескольких файлов :

[php]<file path=”catalog/controller/common/{home,header}*.php”>[/php]

Для всех файлов с разширением .php директории “common":

[php]<file path=”catalog/controller/common/*.php”>[/php]

operation

 - тег в котором заключено описание что именно искать и что делать с найденным элементом. 
Для каждлго задания данный тег открывается и закрывается отдельно.
В теге может быть указан атрибут:
  • error = "skip" - (работает только начина с версии opencart - 2.3) позволят пропускать задачу при возникновении ошибки, без прерывания выполнения всех задач.

[php]<operation error = “skip”> … </operation>[/php]

 

“search” – 

в данном теге указываем элемент поиска. То, что нужно найти в файле/файлах указаных в теге

file

.
 В теги serch можно указывать несколько атрибутов:
  • trim="(true|false)" - удалять пробелы в указаном искомом тексте
  • regex="(true|false)" - используется только когда поиск текста происходит через регулярное выражение
  • index="(number)" - указывает к какому по очереди искомому тексту применять изменения описанные в теге "add"(о нем ниже).  Тоесть если указаный код выглядит так:

[php]<search index=”2″><![CDATA[$data[‘column_left’]]]></search>[/php]

то, если в указаном файле, код – “$data[‘column_left’]” встречается несколько раз, то изменения будут применены только ко второму по счету
совпавшему кексту.

 "add" -

в данном теге указывается текст который надо вставить в искомый файл.
Место куда именно внужно вставить указывается атрибутами:
  • trim="(true|false)" - перед вставкой уода будут удалены все ненужные пробелы. (не обязателен)
  • position="(Replace|Before|After)" - обязателен атрибут.
    • replace - заменить найденый текст (который указаный в теге "search") на текст который указан в теге "add"
    • before - вставить  текст с теге "add" над котом указаный в теге "search"
    • after - вставить  текст с теге "add" под котом указаный в теге "search"
  • offset="(число)" - атрибут указывает сколько строчек отступить от кода указаного в теге "search" и только потом вставить новый код. Если тег "add" будет иметь атрибут position="before" и offset="5"

    [php]<add position=”before” trim=”true” offset=”5″>[/php]

    . То будет найдена искомая строка, потом от нее будет отсчитано 5 строк вверх и после пятой строки встится новый код. Обратите внимание если указать

    [php]<add position=”replace ” trim=”true” offset=”5″>[/php]

    , то система найдет искомый код отступить от него в низ 5 строчек и заменить сам искомый текст и эти 5 строк на новый код.

Все тексты которые мы ищим и те которые хотим вставить должны  заключаться в специальные теги в  начале  “<![CDATA[” и закрываться в конце “]]>". Пример:

[php]
<search><![CDATA[ искомый текст  ]]></search>
<add position="replace"><![CDATA[ добавляемый текст ]]></add>[/php]

И так, давайте теперь разберем код который  я наводил в начале статьи:
[php]

<?xml version=”1.0″ encoding=”utf-8″?>
<modification>
<name>Modification Default</name>
<version>1.0</version>
<author>OpenCart Ltd</author>
<link>http://www.opencart.com</link>
<file path=”catalog/controller/common/home.php”>
<operation>
<search><![CDATA[
$data[‘column_left’] = $this->load->controller(‘common/column_left’);
]]></search>
<add position=”replace”><![CDATA[
test123
]]></add>
</operation>
</file>
</modification>
[/php]

Что он делает?

Ответ:

  1. ищем файл catalog/controller/common/home.php
  2. в данном файле ищем строку
    $data['column_left'] = $this->load->controller('common/column_left');
  3.  найденную строку замеяем на ” test123″

Спасибо всем за внимание. Надеюсь я хоть чуточку улучшил вам понимание в даном моде и в том как с ним работать.

6 Discussions on
“OCMOD opencart создание модуля.”

Напишите

Ваш email никому не покажем