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

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

От автора: в первой статье мы создали плагин Recent Products, который показывает Х количество товаров на стороне front-end’а. Количество отображаемых товаров можно настроить через back-end форму конфигураций, которую мы создали в первой части. Также мы разобрались с архитектурой плагинов в OpenCart. Данная архитектура применяется и к front-end части плагина.

Быстрый обзор

Как уже говорилось ранее, в этом уроке мы создадим файлы front-end стороны плагина. Давайте взглянем на список файлов.

catalog/language/english/module/recent_products.php: файл со статическими заголовками, которые используются на front-end стороне.

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

catalog/model/module/recent_products.php: файл модели, взаимодействующий с базой данных для получения товаров.

catalog/view/theme/default/template/module/recent_products.tpl: шаблон представления с XHTML кодом.

Первым делом вы заметите, что в отличие от директории admin, тут используется папка catalog, в которой хранятся файлы плагина на front-end стороне. Также есть файл модели, который не создавался для back-end’а и хранит программный код нашего плагина, чтобы вытягивать недавние товары из базы данных.

Другая вещь, на которую нужно обратить внимание – расположение файла представления recent_products.tpl. На самом деле, на стороне front-end’а у вас может быть несколько тем, и файл будет храниться в папке темы. У нас указан путь к теме по умолчанию в OpenCart, по которому хранится большая часть файлов шаблонов. Во всем остальном структура плагина такая же, в ней есть файл языка и контроллера.

Создаем файлы плагина

Первым делом создадим файл языка catalog/language/english/module/recent_products.php с кодом.

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

Теперь давайте создадим файл контроллера, который должен находиться по адресу catalog/controller/module/recent_products.php.

Опять же, в методе index хранится большая часть нашего кода. В большинстве плагинов в методе index вам встретится аргумент $setting. Вспомните форму настроек в админке из первого урока, которая нужна для настройки параметров плагина – это и есть переменная $setting. В ней в виде массива хранятся значения настроек плагина для формы.

Сокращение $this->load->language загружает файл языка с front-end стороны, который подробно мы разобрали в первом уроке. Точно так же $this->load->model загружает модель плагина, которая хранится по адресу catalog/model/module/recent_products.php. Также мы подгружаем модель Image из папки tool, в ней есть метод для изменения размера изображений.

Самый важный вызов в методе index – вызов метода getRecentProducts, который возвращает из базы данных массив недавно просмотренных товаров. Когда будем разбирать файл модели, мы разберем его более подробно. В качестве аргумента методу передается значение $setting[‘limit’], которое определяется на стороне back-end’а.

Затем мы проходимся по массиву товаров и подготавливаем массив $data[‘products’], который будем использовать в файле шаблона. В процессе подготовки массива мы используем метод для изменения размера изображений из модели Image и создаем с его помощью маленькие изображения. Большие изображения на front-end’е показывать нет смысла.

Также вы заметите $this->config->get – данная строка используется для вытягивания глобальных значений настроек магазина. Изменить эти параметры можно в System > Settings.

Сокращение $this->url->link создает SEO дружелюбные ссылки на страницы товаров. И наконец, идет кусок кода, загружающий файл шаблона recent_products.tpl, в котором данные подготавливаются к выводу при помощи массива $data.
В отличие от админки, на front-end стороне есть условие загрузки файла шаблона, так как вы можете использовать тему не по умолчанию. Если у вас тем нет, всегда используется тема по умолчанию в качестве фолбэка.

С файлом контроллера закончили. Теперь давайте создадим файл модели catalog/model/module/recent_products.php.

По коду видно, что класс модели начинается с ключевого слова Model, и затем указывается структура папок. Класс наследует все от класса Model, в котором хранятся объекты и методы для взаимодействия с базой данных.

Также мы загружаем модель Product из папки catalog при помощи $this->load->model(‘catalog/product’). Нам понадобятся методы из этого класса.

Есть еще пара полезных сокращений — $this->cache->set и $this->cache->get. Первое используется для записи значения в кэш, а второе получает уже записанное значение из кэша по ключу. Хорошая привычка использовать кэш для увеличения производительности магазина.

В конце мы выполняем запрос к базе данных и вытягиваем недавние товары при помощи строки $this->db->query. Строка запускает метод query класса database.

После получения товаров мы проходимся по ним в цикле и подгружаем информацию о них при помощи метода getProduct класса модели Product. В конце мы сохраняем данные из массива в кэш, чтобы в последующих запросах нам не пришлось заново делать одну и ту же работу!

Осталось создать файл шаблона recent_products.tpl. Создадим его в папке catalog/view/theme/default/template/module/recent_products.tpl.

В файле шаблона мы просто пробегаемся по массиву $products, который был передан из контроллера и выводим список товаров в XHTML.

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

Прикрепляем плагин к макету

Любой плагин, который что-то показывает на front-end стороне, необходимо привязать к свободному макету. Для примера мы привяжем плагин к позиции Content Top.

Перейдите в панель администратора в System > Design > Layouts. Должны отобразиться все доступные макеты магазина. Перейдите в режим редактирования макета Home. Необходимо просто добавить новый модуль, как показано на скриншоте ниже.

Как видите, мы взяли Recent Products > My Recent Block Plugin и прикрепили его к позиции Content Top. Сохраните изменения и все!

Front-end демо

Перейдите на сторону front-end’а, должен появиться красивый блок с недавно просмотренными товарами, как на скриншоте ниже.

Вот и закончилось наше путешествие по разработке пользовательского плагина для OpenCart. Серия уроков была нацелена на начинающих разработчиков, однако мы получили довольно хороший шаблон плагина, который можно расширить под свои нужды. Покопайтесь в коде, добавьте новый функционал. Хорошее упражнение после урока!

Заключение

В этой серии уроков мы изучили разработку пользовательского плагина в OpenCart. Так как курс был для новичков, мы создали очень простой плагин со списком недавно просмотренных товаров в блоке. В предыдущем уроке мы создали форму настроек для нашего плагина.

Автор: Sajal Soni

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

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

Метки:

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

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