Как создать пользовательский плагин в OpenCart 2.1.x.x: часть 1

Как создать пользовательский плагин в OpenCart

От автора: разработчику всегда интересно создать что-то свое в каком-нибудь фреймворке, то же самое можно сказать и про плагины для OpenCart. В этой серии из двух уроков я объясню, как создавать пользовательские плагины в OpenCart. Мы пройдемся по всем деталям продвинутой разработки в OpenCart для новичков, а также создадим небольшой плагин, чтобы показать все аспекты структуры разработки в OpenCart.

В первом уроке мы создадим пользовательский плагин, который будет показывать недавно просмотренные товары на стороне back-end’а. Изменить количество товаров можно на стороне back-end’а. Цель сегодняшнего урока – разработать back-end плагин с формой конфигураций.

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

Коротко о шаблоне MVCL

OpenCart спроектирован по одному из самых популярных шаблонов веб-разработки MVC с небольшими изменениями или, можно сказать, дополнениями. Это дополнение превращает шаблон в MVCL. Возможно, вы уже слышали о данном шаблоне, но я все равно быстро пробегусь по нему для новичков.

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

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

C – контроллер в MVC, обрабатывающий все запросы. Данный слой охватывает большую часть логики приложения: от обработки и валидации вводимых данных до загрузки подходящей модели и вида для подготовки страницы на вывод.
Наконец, есть дополнительный компонент L, который расшифровывается как язык. С его помощью намного легче создавать многоязычные сайты.

Это был быстрый обзор архитектуры OpenCart. Как только мы начнем более подробно разбирать все компоненты, вам станет все гораздо понятнее.

Скелет любого плагина в OpenCart

Давайте взглянем на то, какие файлы нам понадобятся для создания пользовательского back-end плагина.

admin/language/english/module/recent_products.php: файл, в котором хранятся статичные названия, которые используются в админке.

admin/controller/module/recent_products.php: файл контроллера, в котором хранится логика приложения нашего модуля.

admin/view/template/module/recent_products.tpl: файл-шаблон представления с XHTML кодом.

В следующей секции мы создадим все эти файлы и подробно их разберем. Согласно объявлению выше, файлы пользовательского плагина должны быть в папке module. Так как это back-end плагин, то эту папку нужно искать в папке admin. В соответствии с архитектурой, описанной выше, все файлы раскиданы по разным каталогам или компонентам.

Создаем файлы для back-end плагина

В этом разделе мы будем создавать файлы модуля. Первым мы создадим файл языка admin/language/english/module/recent_products.php со следующим кодом. Крайне важный файл, так как OpenCart должен найти его в вашем плагине.

Из кода видно, что статические лейблы занесены в PHP массив. Позже, когда массив будет переконвертирован в PHP переменные, они станут доступны в шаблоне представления.

Также вы могли обратить внимание, что файл был создан в папке english – это папка с языком по умолчанию для магазина. Если у вас многоязычный сайт, необходимо будет создать дополнительные папки. К примеру, для французского необходимо будет создать файл в папке admin/language/french/module/recent_products.php.

Далее мы создадим один из важнейших файлов плагина – файл контроллера. Создайте файл admin/controller/module/recent_products.php с кодом ниже.

В коде создается новый класс для пользовательского плагина, который является дочерним для базового класса Controller. Судя по коду, название класса должно дублировать структуру папок к этому файлу. Путь controller/module/recent_products.php превращается в ControllerModuleRecentProducts (опускаем слэши, а первые буквы записываем в верхнем регистре).

Далее идет метод по умолчанию index, который вызывается сразу после загрузки плагина на стороне front-end’а. В этом методе прописана основная логика плагина.

В контексте текущего приложения сокращение $this->load->language загружает соответствующий файл языка. В нашем случае загружается файл, заданный в предыдущем разделе. Синтаксис довольно прост – нужно передать название плагина с префиксом module/. Переменные языка доступны через метод $this->language->get. Далее задается заголовок страницы при помощи метода setTitle объекта document.

Идем дальше, сокращение $this->load->model используется для загрузки модели модуля. Модель представляет собой класс с методами, с помощью которых можно хранить параметры модуля.

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

Далее мы записываем языковые лейблы типа heading_title и text_edit в массив $data, чтобы потом использовать их в файле шаблона. Следом идет кусок кода, отвечающий за создание хлебных крошек на странице настроек.

Если бы модуль уже был настроен и находился в режиме редактирования, следующий кусок кода выставил бы настройки по умолчанию.

И наконец, мы загружаем такие элементы, как хедер, футер и левый сайдбар. За это отвечает сокращение $this->load->view, которое загружает сам файл представления recent_products.tpl и показывает форму настроек.

В файле контроллера нужно запомнить пару важных моментов. В файле можно часто встретить запись типа $this->load->ELEMENT, где ELEMENT может быть представление, модель или язык. Этот вызов загружает соответствующий вид, модель и язык компонентов.

Следующий и последний файл на сегодня – шаблон вида admin/view/template/module/recent_products.tpl. Давайте создадим его!

Пользователи с хорошим зрением уже заметили, что в файле просто отображаются переменные из контроллера. В остальном это простой XHTML код с формой настроек. Самая главная фишка в том, что код полностью адаптивный прямо из коробки. С созданием файлов для нашего back-end плагина закончили.

Включаем плагин

Перейдите в панель администратора OpenCart в Extensions > Modules. В списке должен быть плагин Recent Products. Для установки модуля кликните на +, как показано на скриншоте ниже.

После установки появится иконка редактирования. Кликните по ней для открытия формы настроек модуля.

В форме конфигурации можно задать недавние продукты, которые должны показываться в блоке на стороне front-end’а. Не забудьте установить поле status в Enabled! Сохраните модуль, он должен выглядеть вот так.

Появилась новая строка Recent Products > My Recent Block Plugin. То есть модуль можно дублировать под разные страницы! Почти закончили! Мы создали полноценный back-end плагин в OpenCart. В следующей части мы разберем front-end сторону вопроса, которая отвечает за показ блока с товарами!

Заключение

Сегодня мы начали создавать пользовательский плагин в OpenCart. В первой части мы уделили внимание разработке на стороне back-end’а, а также создали рабочий пользовательский плагин с формой настроек.

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

В следующей части мы завершим разработку плагина и создадим front-end составляющую, которая будет показывать список товаров. Свои вопросы и предложения пишите в комментариях.

Автор: Sajal Soni

Источник: //code.tutsplus.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (2)