Перейти к содержанию
  • В связи с блокировкой банка QIWI оплата через сайт не возможна.
    Для оплаты и получения дополнений просьба писать в личные сообщения
    Admin*у
    После оплаты Вам так же будет доступно скачивание дополнений и обновлений на данном форуме

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 в данной папке повторяется полная структура папок ядра где размещается модифицированый файл.

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

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

<?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>

Атрибуты:

“name”

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

“version”

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

“author”

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

“link”

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

Теги: “file“

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

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

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

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

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

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

catalog/controller/common и catalog/controller/product.

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

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

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

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

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

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

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

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

“operation“

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

error = "skip" - (работает только начина с версии opencart - 2.3) позволят пропускать задачу при возникновении ошибки, без прерывания выполнения всех задач.

<operation error = “skip”></operation>

“search”

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

“file”

В теги serch можно указывать несколько атрибутов:

trim="(true|false)" - удалять пробелы в указаном искомом тексте

regex="(true|false)" - используется только когда поиск текста происходит через регулярное выражение

index="(number)" - указывает к какому по очереди искомому тексту применять изменения описанные в теге "add"(о нем ниже).  Тоесть если указаный код выглядит так:

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

то, если в указаном файле, код – “$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"

<add position=”before” trim=”true” offset=”5″>

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

<add position=”replacetrim=”true” offset=”5″>

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

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

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

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

<?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>

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

Ответ:

ищем файл catalog/controller/common/home.php

в данном файле ищем строку

$data['column_left'] = $this->load->controller('common/column_left');

 найденную строку замеяем на ” test123″

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...