Написание модулей OpenCart может быть очень хорошим способом узнать, как основы OpenCart действительно работают. Как и остальные компоненты OpenCart, модули следуют шаблону проектирования MVCL. В этом руководстве по документации будет описано, как Dы используете каждый из компонентов MVC-L для создания админки и витрины части Вашего модуля. Самый простой способ создать модуль - это загрузить DIY Module Builder скелет из HostJars. Этот модуль содержит структуру каталогов, файлы и инструкции о том, как понимать и создавать свои собственные модули. Эта страница является более теоретическим руководством.
Базовая файловая структура Вашего модуля будет разделена на две части: папку администратора и каталог. Содержимое каждой папки будет соответствовать структуре MVC-L соответственно, с той разницей, что администратор будет заниматься исключительно функциональностью бэкэнда, а каталог - функциональностью веб-интерфейса. Пользователи Вашего модуля будут взаимодействовать и настраивать его параметры в административной части магазина. Следовательно, файлы в папке администратора будут обрабатывать любые изменения в его настройках, способ отображения модуля в администрировании, установку/удаление модуля и т.д. Аналогичным образом, способ отображения модуля и его работа в интерфейсе пользователя. из магазина будут обрабатываться файлы в папке каталога.
На изображении выше показан скелет структуры каталогов, которой должен следовать Ваш модуль. Хороший способ начать работу с Вашим модулем - продублировать структуру папок и создать указанные выше файлы. То, что будет в этих файлах, определяется тем, что Ваш модуль пытается выполнить, но основные функции подробно описаны в разделах ниже.
Когда владелец магазина использует Ваш модуль, он захочет отредактировать параметры конфигурации модуля в администраторе, чтобы решить, на каких макетах будет отображаться модуль, включен ли он или отключен, и какие-либо специфичные для модуля параметры. Как разработчику модуля, вам нужно будет создать страницу администратора, на которой можно редактировать модуль и добавлять или настраивать параметры конфигурации.
Все файлы администратора находятся в папке admin/. Вы найдете четыре папки в папке admin/:
Для всех модулей потребуется по крайней мере один файл в каждой из папок вида и контроллера. Большинству потребуется файл в каждой из папок модели и языка. Обычно файлы имеют одинаковое имя, за исключением того, что файл представления имеет другой суффикс (.tpl или .twig). Мы пройдемся по этим файлам один за другим.
Первый файл, который Вы создадите, будет контроллером страницы интерфейса Вашего модуля. OpenCart автоматически идентифицирует существующие модули, просто прочитав папку admin/controller/module Вашего магазина. Любые модули, существующие в этой папке, будут автоматически показаны на странице Модулей, и на странице Пользовательские разрешения. Вы можете вызвать файл Вашего контроллера my_module.php.
Файл контроллера - это место, где Вы можете загрузить языковые файлы для преобразования текста в переменные, которые будут использоваться в файле шаблона. На диаграмме выше Вы можете увидеть $_['text'] переменная обрабатывается контроллером, а затем отправляется в виде $text в представление. Здесь Вы также будете использовать несколько файлов моделей и их функций класса, включая файл модели вашего модуля, если он есть. Для получения дополнительной информации о загрузке файлов см. Загрузка файлов в контроллер.
Вы также можете иметь функцию, определенную как public function install (). Эта функция будет срабатывать при нажатии на ссылку установки на странице Расширения > Модули. Аналогично, функция, определенная как public function uninstall (), будет запущена при нажатии на ссылку удаления. Вы можете использовать эти функции для создания и удаления любых структур (таких как таблицы базы данных или настройки конфигурации), требуемых Вашим модулем. Хорошей практикой является создание функции удаления для очистки любых изменений, внесенных Вашим модулем. Чтобы увидеть конкретный код для install(), uninstall(), посетите Установить/удалить модуль.
Контроллер - единственный файл в структуре MVC-L, доступ к которому осуществляется по URL в OpenCart. В администрации URL будет выглядеть так /admin/index.php?route=module/my_module&token. Администратор добавляет токен в URL, тогда как ссылка в каталоге его не будет иметь. В результате файл контроллера будет иметь функцию, определенную как public function index(). Это общедоступный 'page' загружается по URL-адресу, который будет показан при Кнопка редактирования и где форма просмотра будет отправлена. Представленные данные будут обработаны в этой функции и сохранены в таблице базы данных `settings` через объект конфигурации контроллера.
Второй необходимый файл для интерфейса администратора Вашего модуля - это файл вида. Он будет создан в папке admin/view/template/module и будет иметь суффикс .tpl (.twig). Это стандарт для файлов просмотра OpenCart. В этом файле Вы создадите форму для пользователя, чтобы заполнить и отправить. Он будет передан в индексную функцию контроллера модуля. Самый простой способ создать файл представления - это скопировать и вставить существующий аналогичный файл представления и отредактировать форму, чтобы она содержала правильные поля для параметров конфигурации Вашего модуля. Вы можете вызвать в Ваш файл представления my_module.tpl (my_module.twig).
В представлении Вы сможете получить доступ к тексту на языке, который хранится в файле контроллера как переменная PHP. См. Загрузка файлов в Контроллере для получения кода о том, как это сделать.
Модули редко требуют файл модели на стороне администратора. Однако, если Ваш модуль использует собственную таблицу базы данных или пользовательский запрос для создания данных определенного формата, то Вы можете написать файл модели. Примером этого может быть, если вы пишете модуль счетчика посетителей, где каждый посетитель хранится в таблице базы данных со своим IP-адресом и количеством посещений. Затем Вы можете создать файл модели с функцией для определения и создания этой дополнительной таблицы в базе данных OpenCart. Файл модели будет находиться в папке admin/model/module. Вы можете вызвать файл модели my_module.php, такой же, как Ваш контроллер и языковые файлы.
Внешний интерфейс Вашего модуля следует той же схеме, что и описанный выше интерфейс администратора. То, что Вы будете включать в каждый из Ваших файлов внешнего интерфейса, будет в значительной степени зависеть от того, что должен делать Ваш модуль. Модуль может обращаться к любым файлам моделей, которые уже существуют в OpenCart, Вам не нужно писать собственные запросы к базе данных, если такой же запрос уже существует. Например, catalog/product модель содержит много полезных запросов для получения продуктов. Использование этих функций модели должно быть предпочтительнее, чем изобретать велосипед.
Ключевое отличие во внешнем интерфейсе Вашего модуля заключается в том, что Ваш файл представления будет находиться в папке catalog/view/theme/(themename)/template/module. Это значительно более глубокая структура папок для файла представления администратора из-за тем. Магазин OpenCart может иметь много разных темы интерфейса доступен, но только один админ шаблон. (themename)
Во внешней части Вашего модуля Вы будете иметь доступ к опциям конфигурации, сохраненным Вашим модулем, через объект конфигурации контроллера и переменную $settings, передаваемую в функцию индекса контроллера модуля. На основе этих настроек Вы можете управлять аспектами отображения веб-интерфейса.