Jump to content
  • Разработка Модулей для OpenCart


    content bot
     Share

    Разработка Модулей

    Написание модулей OpenCart может быть очень хорошим способом узнать, как на самом деле работают основы OpenCart. Как и в остальной части OpenCart, модули следуют шаблону проектирования MVCL. В этом руководстве по документации будет описано, как можно использовать каждый из компонентов MVC-L для создания административной и интерфейсной частей вашего модуля. Самый простой способ создать модуль - это загрузить скелет DIY Module Builder из HostJars. Этот модуль содержит структуру каталогов, файлы и инструкции по пониманию и построению собственных модулей. Эта страница является более теоретическим руководством.

    Основная структура каталогов

    Основная структура файлов для вашего модуля будет разделена на две части: папки admin и catalog. Содержимое каждой папки будет соответствовать структуре MVC-L соответственно, с той разницей, что администратор будет иметь дело исключительно с бэкенд-функциональностью, а каталог-с функционалом веб-интерфейса. Пользователи вашего модуля будут взаимодействовать и настраивать его параметры в административной части магазина. Поэтому файлы в папке admin будут обрабатывать любые изменения его настроек, способ отображения модуля в административной части, установку / удаление модуля и т.д. Аналогичным образом, способ отображения модуля и его работа в интерфейсе пользователя магазина будет обрабатываться файлами в папке catalog.

    file-structure

    На рисунке выше показана схема структуры каталогов, которой должен следовать ваш модуль. Хороший способ начать работу с вашим модулем - это продублировать структуру папок и создать указанные выше файлы. То, что будет идти в этих файлах определяется тем, что ваш модуль пытается выполнить, но основные функциональные возможности подробно описаны в разделах ниже.

    Функциональность модуля в админ части

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

    Все файлы администратора находятся в папке admin/. Вы найдете ещё четыре папки в папке admin/:

    1. controller
    2. view
    3. language
    4. model

    Для всех модулей потребуется по крайней мере один файл в каждой из папок view и controller. Для большинства из них потребуется файл в каждой из папок model и language. Обычно файлы имеют одно и то же имя, за исключением того, что файлы view имеют другой суффикс (.tpl). Мы будем просматривать эти файлы один за другим.

    mvcl

    Controller - Контроллер

    Первый файл, который вы создадите, будет контроллером для страницы интерфейса администратора вашего модуля. OpenCart автоматически идентифицирует существующие модули, просто прочитав папку admin/controller/module вашего магазина. Все модули, существующие в этой папке, будут автоматически показаны на странице Модули и на закладке Разрешения на странице Пользователи. Вы можете назвать свой файл контроллера my_module.php.

    Файл контроллера - это место, где вы можете загрузить языковые файлы для преобразования текста в переменные, которые будут использоваться в файле шаблона. На диаграмме выше вы можете видеть, как переменная $_['text'] обрабатывается контроллером, а затем отправляется в виде $text в view. Здесь вы также будете использовать несколько файлов моделей и их функции класса , включая файл модели вашего модуля, если он есть. Дополнительные сведения о загрузке файлов см. в разделе Загрузка файлов в контроллер.

    У вас также может быть функция, определенная как public function install(). Эта функция будет активирована при нажатии на ссылку Установить на странице Расширения > Модули. Аналогично, функция, определенная как public function uninstall(), будет активирована при нажатии на ссылку удаления. Вы можете использовать эти функции для создания и удаления любых структур (например, таблиц базы данных или параметров конфигурации), необходимых вашему модулю. Рекомендуется создать функцию удаления, чтобы очистить все изменения, внесенные вашим модулем. Чтобы просмотреть конкретный код для установки (), удаления (), посетите раздел Установка/удаление модуля.

    Доступ по URL-адресу

    Контроллер является единственным файлом в структуре MVC-L, к которому можно получить доступ по URL в OpenCart. В администрировании URL-адрес будет выглядеть как /admin/index.php?route=module/my_module&token. Администратор добавляет маркер к URL-адресу, в то время как ссылка в каталоге не будет иметь его. В результате файл контроллера будет иметь функцию, определенную как public function index(). Это общедоступная "страница", которая загружается по URL-адресу, который будет отображаться при нажатии кнопки редактирования и куда будет отправлена форма просмотра. Представленные данные будут обработаны в этой функции и сохранены в таблице базы данных "settings" через объект конфигурации контроллера.

    View - Представление

    Второй необходимый файл для интерфейса администратора вашего модуля - это файл view. Он будет создан в папке admin/view/template/module и будет иметь суффикс .tpl или .twig . Это стандартно для файлов OpenCart view. В этом файле вы создадите форму для заполнения и отправки пользователем. Она будет передана в функцию index контроллера модуля. Самый простой способ создать файл представления - скопировать и вставить существующий аналогичный файл представления, а также отредактировать форму, чтобы она содержала правильные поля для параметров конфигурации вашего модуля. Вы можете назвать свой файл представления my_module.twig .

    В представлении вы сможете получить доступ к тексту с языка, на котором файл контроллера хранится как переменная PHP. Смотрите раздел Загрузка файлов в контроллер для получения кода о том, как это сделать.

    Model - Модель

    Обычно модулям требуется файл модели на стороне администратора. Однако если ваш модуль использует собственную таблицу базы данных или пользовательский запрос для создания данных определенного формата, то вы можете написать файл модели. Примером такой ситуации может быть написание модуля счетчика посетителей, где каждый посетитель хранится в таблице базы данных со своим IP-адресом и количеством посещений. Вы можете создать файл модели с функцией для определения и создания этой дополнительной таблицы в базе данных OpenCart. Файл модели будет находиться в папке admin/model/module. Вы можете назвать свой файл модели my_module.php, аналогично названию файлов вашего контроллера и языковых файлов.

    Функциональность внешнего интерфейса

    Внешний интерфейс вашего модуля следует той же схеме, что и только что описанный интерфейс администратора. То, что вы будете включать в каждый из ваших файлов внешнего интерфейса, во многом будет зависеть от того, что должен делать ваш модуль. Модуль может получить доступ к любым файлам моделей, которые уже существуют в OpenCart, вам не нужно писать свои собственные запросы к базе данных, если такой же запрос уже существует. Например, модель catalog/product содержит много полезных запросов для извлечения товаров. Не изобретайте колесо, отдавайте предпочтение уже имеющимся функциям модели.

    Ключевым отличием в интерфейсе вашего модуля является то, что ваш файл представления будет находиться в папке catalog/view/theme/(themename)/template/module. Это значительно более глубокая структура папок для файла представления администратора из-за тем. В магазине OpenCart может быть доступно множество различных тем интерфейса, но только один шаблон администратора. (themename)

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

     Share



×
×
  • Create New...