Главная » Статьи » Как создать модуль для Опенкарт. Часть 1

Как создать модуль для Опенкарт. Часть 1

Как создать модуль для Опенкарт

От автора: приветствую вас, друзья. Итак, мы продолжаем цикл статей, посвященных знакомству с одной из популярнейших CMS для создания интернет-магазинов – OpenCart (Оперкарт). В этой статье мы поговорим о том, как вывести артикул в OpenCart.

В одной из предыдущих статей мы с вами решили задачу вывода артикула в карточку товара. При этом все изменения в коде мы делали непосредственно в файлах Опенкарт, что является не совсем правильным путем. Изменять исходные файлы движка – контроллеры, модели, шаблоны дефолтной темы – не рекомендуется. Чтобы изменить существующий функционал или добавить новый – рекомендуют использовать модификаторы OCMOD.

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

Название файла модуля должно иметь следующий вид: name.ocmod.xml. Вместо name вы пишете какое-либо наименование модуля, ну а ocmod.xml – это обязательная часть. В файле XML корневым тегом является тег modification. В него помещается шапка и все операции с файлами. В качестве шапки мы можем указать следующее:

<?xml version="1.0" encoding="utf-8"?>
<modification> <name>Вывод артикула</name> <code>sku_wfm</code> <version>1.0</version> <author>Andrey</author> <link>https://webformyself.com </link>
</modification>

Полагаю, здесь все должно быть понятно. В тегах name, code, version, author и link указывается служебная информация: название, идентификатор, версия, автор и сайт автора модуля.

После шапки мы можем записывать операции с файлами. Для этого используется тег file. В значении атрибута path этого тега мы указываем путь к файлу, который хотим модифицировать. Например, в статье по работе с артикулом мы изменяли файл контроллера товара — catalog/controller/product/product.php. Если то же самое мы хотим сделать модификатором, тогда нужно записать следующее:

<file path="catalog/controller/product/product.php"> </file>

Двигаемся дальше. В тегах file мы можем использовать тег operation, внутри которого указываем саму операцию над искомым файлом. Ну а внутри тега operation мы уже описываем эту операцию с помощью тегов search и add. Первый тег позволяет найти нужный участок кода в файле, ну а второй тег позволяет добавить наш код.

Оба тега имеют ряд атрибутов. Например, тег search имеет полезный атрибут index, значение которого мы можем указать номер позиции найденной строки. Это может быть полезно, если в файле есть, к примеру, 3 одинаковые строки кода, а нам нужна именно вторая. В этом случае в качестве значения index указывается index=”1”. Нумерация позиций найденного начинается с нуля, поэтому вторая позиция будет иметь индекс с номером 1.

Тег add позволяет использовать такой полезный атрибут, как position с возможными значениями replace (заменить найденный код), before (добавить перед найденным кодом) и after (вставить после найденного кода). В рамках статьи я не описываю все доступные атрибуты и возможности модификаторов. Я описываю лишь те, которые пригодятся нам для решения поставленной задачи – вывести артикул в карточку товара. Если вы хотите познакомиться со всеми атрибутами и возможностями, тогда на нашем канале YouTube можно найти ряд уроков по теме.

Ну что же, давайте попробуем что-нибудь сделать, пока в качестве теста. Например, в самом начале класса контроллера добавим PHP комментарий. Итоговый код модификатора в этом случае будет таким:

<?xml version="1.0" encoding="utf-8"?>
<modification> <name>Вывод артикула</name> <code>sku_wfm</code> <version>1.0</version> <author>Andrey</author> <link>https://webformyself.com </link> <file path="catalog/controller/product/product.php"> <operation> <search> <![CDATA[class ControllerProductProduct extends Controller {]]> </search> <add position="after"> <![CDATA[//comment from module]]> </add> </operation> </file>
</modification>

В теге search мы ищем строку class ControllerProductProduct extends Controller {, ну а в теге add мы указываем, что в позицию после найденной строки следует добавить комментарий. Попробуем установить модификатор. Для этого идем в меню Дополнения – Установка Дополнений и загружаем созданный файл XML. Если мы нигде не ошиблись, то должны увидеть следующую картину:

После установки модификатора обязательно необходимо обновить кэш модулей. Для этого переходим в меню Дополнения – Менеджер дополнений и в правом верхнем углу жмем кнопку Обновить. На этой же странице мы должны увидеть наш модуль в списке установленных дополнений.

Оригинальный файл контроллера при этом никак не изменился. Но по пути /system/storage/modification/catalog/controller/product/product.php должна быть копия файла с комментарием кода, который был добавлен модулем.

Ну что же, теперь вы имеете общее представление о том, как создаются дополнения для Опенкарт. В следующей статье мы продолжим тему и создадим полноценный модификатор OCMOD, который будет выводить артикул в карточку товара. Больше об OpenCart вы можете узнать из наших бесплатных или платных уроков.