Skip to content

Latest commit

 

History

History
133 lines (117 loc) · 8.2 KB

README.md

File metadata and controls

133 lines (117 loc) · 8.2 KB

Создание модуля

Модули позволяют расширять функционал OkayCMS и вмешиваться в стандартный ход выполнения различных операций. Каждый модуль включает в себя классы контроллеров, моделей, шаблоны отображения, изображения, CSS стили, JS файлы, языковые файлы. Такая инкапсуляция позволяет легко переносить модуль между приложениями на платформе OkayCMS. Модуль в OkayCMS - это папка с определенной структурой данных внутри. Модуль обязательно должен располагаться в каталоге для модулей Okay/Modules/VendorModule/NameModule/ и иметь следующую структуру.

Структура файлов модуля
.
├── Init
|   ├── Init.php
|   ├── routes.php
|   ├── SmartyPlugins.php
|   └── services.php
├── Backend
|   ├── Controllers
|   |   └── Файлы контроллеров бекенда модуля
|   ├── design
|   |   ├── html
|   |   |   └── Файлы дизайна бекенда
|   |   ├── css
|   |   |   └── Файлы стилей бекенда
|   |   ├── js
|   |   |   └── Файлы стилей бекенда
|   |   └── images
|   |       └── Файлы изображений бекенда
|   └── lang
|       └── Файлы переводов бекенда
├── config
|   └── config.php
├── Controllers
|   └── Файлы контроллеров модуля
├── Entities
|   └── Файлы сущностей модуля
├── Extenders
|   └── Файлы экстендеров модуля
├── design
|   ├── html
|   |   └── Файлы дизайна
|   ├── css
|   |   └── Файлы стилей модуля
|   ├── js
|   |   └── Файлы скриптов модуля
|   ├── images
|   |   └── Файлы изображений модуля
|   ├── lang
|   |   └── Файлы переводов клиентской части модуля
|   ├── css.php
|   └── js.php
├── settings.xml
└── preview.(jpeg|jpg|png|gif|svg)
Конфигурационные файлы модуля

Файл Init/Init.php является самым главным конфигурационным файлом. Он обязательно должен унаследоваться от Okay\Core\Modules\AbstractInit. В классе Init должны быть реализованы методы install() и init(). Базовый класс AbstractInit предоставляет средства для инициализации модуля в системе. Метод install() выполняется один раз, во время установки модуля, метод init() вызывается при каждом запуске системы. В методе install() стоит вызывать такие методы как setBackendMainController(), migrateEntityTable(), setModuleType(). Пример инициализации модуля и полное описание инициализации.

Файл Init/routes.php содержит роуты для текущего модуля. Структура файла полностью повторяет структуру системных роутов

Файл Init/services.php содержит сервисы для текущего модуля. Регистрация сервисов в модуле осуществляется также как и системные сервисы, но в файле Init/services.php. Все они должны быть частью DI контейнера.

Файл Init/SmartyPlugins.php содержит Smarty плагины для текущего модуля. Регистрация плагинов в модуле осуществляется также как и системные Smarty плагины, но в файле Init/SmartyPlugins.php.

Файл preview.(jpeg|jpg|png|gif|svg) может присутствовать в корневой директории модуля, он будет автоматически отображаться в админ-панеле, в списке модулей.

Файл settings.xml нужен для модулей доставок и оплат. Файл содержит структуру настроек, которые нужно вывести в админ-панели в способе доставки или способе оплаты. (Используется при установке типа модуля MODULE_TYPE_PAYMENT или MODULE_TYPE_DELIVERY).

Структура файла:

<?xml version="1.0" encoding="UTF-8"?>
<module>
    <settings><!--Если указать больше одного <options> будет выведено как HTML select (выпадающий список)-->
        <variable>service_type</variable><!--Название переменной-->
        <name>{$lang->settings_np_service_type}</name><!--Название параметра (поддерживается из переводов)-->
        <options>
            <name>{$lang->settings_np_service_dd}</name>
            <value>DoorsDoors</value>
        </options>
        <options>
            <name>{$lang->settings_np_service_wd}</name>
            <value>WarehouseDoors</value>
        </options>
    </settings>
    <settings><!--Так будет выведено текстовое поле-->
        <variable>wayforpay_merchant</variable>
        <name>{$lang->way_for_pay_merchant}</name>
    </settings>
    <settings type="hidden|text|date|checkbox"><!--Так будет выведено как инпут указанного типа-->
        <variable>wayforpay_merchant</variable>
        <name>{$lang->way_for_pay_merchant}</name>
    </settings>
</module>

Файл config/config.php может содержать директивы, такие же как и в системном конфиге. Можно только добавлять директивы, переопределять системные директивы нельзя.

Типы модулей

Тип модуля может влиять на некоторое его поведение в системе. На данный момент существуют такие типы модулей:

  • MODULE_TYPE_PAYMENT - модуль оплаты
  • MODULE_TYPE_DELIVERY - модуль доставки
  • MODULE_TYPE_XML - модуль создающий выгрузку в xml файл.

Тип модуля можно установить в методе install() класса Init с помощью метода setModuleType (всегда используйте константы начинающиеся на MODULE_TYPE_)

$this->setModuleType(MODULE_TYPE_DELIVERY);

Например модуль с типом MODULE_TYPE_DELIVERY будет выводить настройки, определённые в файле settings.xml в админ-панеле в способе доставки. Также этот модуль будет выводиться в списке доступных модулей доставки в настройках способа доставки.

Модуль, быстрый старт