0 руб
Оформить заказЧто такое OCMOD и для чего он нужен в Опенкарт 3?
OCMOD – это система, которая позволяет владельцам магазинов изменять (модифицировать) функционал магазина или добавить дополнительный функционал, загружая сжатый файл ocmod.zip, содержащий файлы XML, SQL и PHP. Если OCMOD разработан правильно, он может изменить работу OpenCart 3 без изменения каких-либо основных файлов. Это означает, что при удалении модификации ни один из исходных файлов OpenCart не нуждается в восстановлении или исправлении. OCMOD основан на системе Vqmod Qphoria..
Установка OCMOD файлов и иx структура.
Установка OCMOD файлов производится через панель управления в разделе Модули / Расширения — Установка расширений.
Для установки расширения, достаточно загрузить файл .ocmod.zip
Например: name_modificator.ocmod.zip
Варианты загрузки OCMOD модификаторов.
- Загрузка модификатора через Меню - Модули / Расширения - Установка расширений . Данный метод установки записывает код модификатора в базу данных, так же модификаторы видны в списке модификаторов. А если в архиве есть файлы модуля, то данные файлы копируются в соответствующие директории.
- Возможно просто скопировать файл модификатора nazvanie.ocmod.xml в папку system . Данный метод не записывает код в базу, а использует его напрямую. Удобен тем, что можно код редактировать дальше не делая повторных загрузок.
Пример структуры сжатого файла ocmod.zip
- upload
- install.xml
upload – это директория в которой расположены файлы (например библиотека или модуль).
install.xml – это XML файл модификатор.
Обратите внимание, на тот факт, что не все директории доступны для загрузки файлов через установку расширений. Ниже список доступных директорий.
'admin/controller/extension/', 'admin/language/', 'admin/model/extension/', 'admin/view/image/', 'admin/view/javascript/', 'admin/view/stylesheet/', 'admin/view/template/extension/', 'catalog/controller/extension/', 'catalog/language/', 'catalog/model/extension/', 'catalog/view/javascript/', 'catalog/view/theme/', 'system/config/', 'system/library/', 'image/catalog/'
Документация по XML модификатору.
Модификатор создает виртуальную копию файла над которым производит изменения. Используйте эту систему вместо изменения файлов по умолчанию . Различные модификации могут быть применены для одного и того же файла
Пример OCMOD файла:
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Modification Default</name>
<code>modification_id</code>
<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>
Описание тегов XML файла
File – файл или файлы для изменений
Система модификатора использует PHP функцию glob для поиска файлов
http://hk1.php.net/manual/ru/function.glob.php
Пример:
Путь к файлу.
<file path="catalog/controller/common/home.php">
Если необходимо произвести изменения в нескольких файлах или в файлах "по маске", используйте следующий пример:
<file path="system/engine/action.php|system/engine/loader.php|system/library/config.php|system/library/*.php">
или
<file path="system/{engine,library}/{action,loader,config,language}*.php">
Operation – действия над файлом / файлами
Атрибуты:
- error="(skip|abort)" - пропустить при ошибке | прервать работу модификатора
Search – поиск кода
Атрибуты:
- trim="(true|false)" - удалить пробелы
- regex="(true|false)" - использовать регулярное выражение
- index="(число)" - выбор определенной найденной позиции по числу
Пример:
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Modification Default</name>
<code>modification_id</code>
<version>1.0</version>
<author>OpenCart Ltd</author>
<link>http://www.opencart.com</link>
<file path="catalog/controller/common/home.php">
<operation>
<search trim="true|false"><![CDATA[
$data['column_left'] = $this->load->controller('common/column_left');
]]></search>
<add position="replace" offset="1"><![CDATA[
test123
]]></add>
</operation>
</file>
</modification>
Add – добавить или заменить.
Атрибуты:
- position="(Replace|Before|After)" - Заменить | Вставить до | Вставить после
- trim="(true|false)" - удалить пробелы
- offset="(число)" - перейти на указанное кол-во строк (можно использовать отрицательное значение)
(внимание, атрибут position не может быть использован если применяется поиск с регулярным выражением).
Пример:
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Modification Default</name>
<code>modification_id</code>
<version>1.0</version>
<author>OpenCart Ltd</author>
<link>http://www.opencart.com</link>
<file path="catalog/controller/common/home.php">
<operation>
<search trim="true|false" limit="2"><![CDATA[
$data['column_left'] = $this->load->controller('common/column_left');
]]></search>
<add position="Replace|Before|After" offset="2"><![CDATA[
test123
]]></add>
</operation>
</file>
</modification>
Regex - регулярное выражение
Атрибуты:
- limit="(число)" - ограничение кол-во найденных совпадений
Пример:
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Regex Example</name>
<code>modification_id</code>
<version>1.0</version>
<author>OpenCart Ltd</author>
<link>http://www.opencart.com</link>
<file path="system/{engine,library}/{action,loader,config,language}*.php">
<operation>
<search regex="true" limit="3"><![CDATA[
~(require|include)(_once)?\(([^)]+)~
]]></search>
<add><![CDATA[
$1$2(modification($3)
]]></add>
</operation>
</file>
</modification>
Когда вы используете regex вы не можете использовать атрибут position, trim or offset . Атрибут limit доступен для использования.
В примере ниже можно увидеть как в третьей найденой позиции меняется 'foo' на 'bar':
lorem ifoopsum foo lor foor ipsum foo dolor foo
^1 ^2 ^3 ^4 ^5
Выражение:
s/\(.\{-}\zsfoo\)\{3}/bar/
Результат:
lorem ifoopsum foo lor barr ipsum foo dolor foo
^1 ^2 ^3=bar ^4 ^5
Больше информации по регулярным выражением в PHP вы можете узнать по ссылке ниже:
http://hk2.php.net/manual/ru/function.preg-replace.php
Информацию по регулярным выражением можно получить по ссылке ниже:
http://www.regular-expressions.info
Источник: https://github.com/opencart/opencart/wiki/Modification-System