Разработка новых каналов продвижения
OpenCart включает в себя несколько полезных каналов продвижения товаров, но вы можете решить, что вам нужен собственный формат, и решите его создать. Написание каналов продвижения товаров OpenCart очень похоже на написание модулей OpenCart и может быть очень хорошим способом узнать, как на самом деле работают основы OpenCart. Как и остальная часть OpenCart, каналы следуют шаблону проектирования MVCL. В этом руководстве по документации будет описано, как вы можете использовать каждый из компонентов MVCL для создания административных и внешних частей вашего канала продвижения.
Функциональность каналов в административной части
Когда владелец магазина будет использовать ваш канал продвижения товаров, он захочет изменить параметры конфигурации канала продвижения в административной части, чтобы выбрать, включен ли он или нет, а также настроить любые конкретные параметры, которые вы сделаете доступными. Как разработчику модуля, вам нужно будет создать страницу администратора, где можно будет редактировать канал продвижения.
Все файлы администратора находятся в папке admin /. Вы найдете четыре папки в папке admin /:
- controller
- view
- language
- model
Для всех каналов продвижения потребуется по крайней мере один файл в каждой из папок view и controller. Для большинства из них потребуется файл в каждой из папок model и language. Обычно файлы имеют одно и то же имя, за исключением того, что файлы view имеют другой суффикс (.tpl). Мы будем просматривать эти файлы один за другим.
Controller - Контроллер
Первый файл, который вы создадите, будет контроллером для страницы интерфейса администратора вашего канала продвижения. OpenCart автоматически идентифицирует существующие каналы продвижения, просто прочитав папку admin/controller/feeds вашего магазина. Все каналы продвижения, существующие в этой папке, будут автоматически показаны на странице Каналы продвижения и на закладке Разрешения на странице Пользователи. Вы можете назвать свой файл контроллера my_feed.php.
Файл контроллера будет иметь функцию, определенную как public function index(). Это общедоступная "страница", которая загружается по URL-адресу, который будет отображаться при нажатии кнопки редактирования и куда будет отправлена форма просмотра. Представленные данные будут обработаны в этой функции и сохранены в таблице базы данных "settings" через объект конфигурации контроллера.
У вас также может быть функция, определенная как public function install(). Эта функция будет активирована при нажатии на ссылку Установить на странице Расширения > Каналы продвижения. Аналогично, функция, определенная как public function uninstall(), будет активирована при нажатии на ссылку удаления. Вы можете использовать эти функции для создания и удаления любых структур (например, таблиц базы данных или параметров конфигурации), необходимых вашему каналу продвижения. Рекомендуется создать функцию удаления, чтобы очистить все изменения, внесенные вашим модулем.
View - Представление
Второй необходимый файл для интерфейса администратора вашего канала продвижения - это файл view. Он будет создан в папке admin/view/template/feed и будет иметь суффикс .tpl или .twig . Это стандартно для файлов OpenCart view. В этом файле вы создадите форму для заполнения и отправки пользователем. Он будет передан в функцию index контроллера модуля. Самый простой способ создать файл представления - скопировать и вставить существующий аналогичный файл представления, а также отредактировать форму, чтобы она содержала правильные поля для параметров конфигурации вашего канала продвижения. Вы можете назвать свой файл представления my_feed.twig .
Language - Язык
Третий тип файлов, которые обычно необходимо создать для любого канала продвижения, - это языковые файлы. Вам понадобится один языковой файл для каждого языка, с которым ваш канал продвижения совместим. Языковой файл будет находиться в папке admin/language/<language name>/feed. Он просто содержит ассоциативный массив PHP с названием $_, который содержит внутреннее имя в качестве ключа и перевод в качестве значения. Вы можете назвать ваш языковой файл my_feed.php, так же, как файлы вашего контроллера и модели.
Model - Модель
Для фидов редко требуется файл модели на стороне администратора. Однако, если ваш канал продвижения использует собственную таблицу базы данных или пользовательский запрос для создания данных определенного формата, вы можете написать файл модели. Примером этого может быть, если вы пишете фид счетчика посетителей, где каждый посетитель хранится в таблице базы данных со своим IP-адресом и количеством посещений. Вы можете создать файл модели с функцией для определения и создания этой дополнительной таблицы в базе данных OpenCart. Файл модели будет находиться в папке admin/model/feed. Вы можете назвать файл модели my_feed.php, так же, как ваш контроллер и языковые файлы.
Функциональность внешнего интерфейса канала продвижения
Внешний интерфейс вашего канала продвижения следует той же схеме, что и только что описанный интерфейс администратора. То, что вы будете включать в каждый из ваших файлов внешнего интерфейса, во многом будет зависеть от того, что должен делать ваш канал продвижения. Фид может получить доступ к любым файлам моделей, которые уже существуют в OpenCart, вам не нужно писать свои собственные запросы к базе данных, если такой же запрос уже существует. Например, модель catalog/product содержит много полезных запросов для извлечения товаров. Не изобретайте колесо, отдавайте предпочтение уже имеющимся функциям модели.
Ключевым отличием в интерфейсе вашего канала продвижения является то, что ваш файл представления будет находиться в папке catalog/view/theme/(themename)/template/feed. Это значительно более глубокая структура папок для файла представления администратора из-за тем. В магазине OpenCart может быть доступно множество различных тем интерфейса, но только один шаблон администратора. (themename)
В интерфейсной части вашего канала продвижения вы будете иметь доступ к параметрам конфигурации, сохраненным вашим фидом, как через объект config контроллера, так и через переменную $settings, переданную в функцию index контроллера модуля. Вы можете управлять аспектами отображения интерфейса на основе этих настроек.