Структура плагина

Oxwall является одной из самых простых MVC структурированных платформ. Он отлично подходит для разработчиков, желающих разобраться в работе веб-фреймворков, написанных на PHP.

Плагины Oxwall разрабатываются, основываясь на принципах паттерна MVC. Составляющие шаблона проектирования - MVC (Model View Controller). Ниже можно более подробно ознакомиться с этими понятиями, а также увидеть структуру плагина.

Model (Модель)

Model позволяет осуществлять непосредственное взаимодействие с базой данных или с другими источниками данных, получая информацию и представляя ее в нужном виде для отображения. Model в основном состоит из запросов к базе данных, а также возможности преобразования данных в необходимый формат. В Oxwall используется технология ORM, но также остается возможность писать прямые запросы (минуя ORM) к базе данных. Подробнее о моделях данных можно прочитать в разделе - “Слой бизнес логики”.

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

View отвечает за отображение информации. В нем должно содержаться как можно меньше логики, которую, по возможности, нужно выносить в Model, Controller или в Component. Это подразумевает простые и понятные шаблоны для вывода информации. Шаблоны в Oxwall имеют расширение ”.html”.

Компонент - эта некоторая часть инкапсулированной логики из View. Т.е компоненты это некие помощники View. Иногда требуется вынести часть логики которая больше относится к View нежели к Controller, вот для этого и нужен компонент. Также компоненты используются при повторном использовании логики View. К примеру отображение формы или меню. Компоненты могут содержать собственный файл шаблона (.html), а также вызваны через ajax. Подробнее о представляних и об компонентах можно прочитать в разделе - “Представление и компоненты”.

Controller (Контроллер)

Controller обрабатывает данные от различных клиентов и выводит их с помощью соответствующих файлов View или Component. Подробнее о работе контроллеров можно прочитать в разделе - “Маршрутизация и контроллеры

Базовая структура директорий плагина

/
- - bol/
- - classes/
- - components/
- - controllers/
- - mobile/
- - - - classes/
- - - - components/
- - - - controllers/
- - - - views/
- - - - init.php
- - static/
- - - - css/
- - - - js/
- - - - images/
- - views/
- - - - components/
- - - - controllers/
- - update/
- - init.php
- - cron.php
- - activate.php
- - deactivate.php
- - install.php
- - uninstall.php
- - langs.zip
- - plugin.xml

Описание директориий плагина:

  1. bol - содержит файлы модели, которые непосредственно работают с базой данных или с каким-либо другим хранилищем или выполняют любую другую бизнес логику (работа с файлами, картинками итд). Детально как работать с файлами моделей можно прочитать в разделе - Слой бизнес логики.
  2. classes - содержит различные классы плагина не относящиеся к работе с моделью или с контроллером, например классы системных событий или скаченные библиотеки.
  3. controllers - содержит классы контроллеров, которые непосредственно взаимодействуют с клиентом посредством зарегистрированных роутов. Более подробно про маршрутизацию/роутинг и контроллеры можно прочитать в разделе - Маршрутизация и контроллеры.
  4. mobile - содержит классы контроллеров, моделей и компонентов для работы плагина в мобильном режиме, т.е когда пользователь нажимает на ссылку перехода в мобильную версию сайта или же сайт автоматически определяет устройство пользователя как мобильное.
  5. static - содержит в себе js, css, а также файлы изображений необходимых для работы плагина. Следует отметить тот факт, что данная директория не доступна из браузера, но после установки плагина все ее содержимое автоматически копируется в директорию доступную для браузеров - ow_static.
  6. views - содержит файлы представления для всех контроллеров и компонентов плагина. Следует отметить тот факт, что файлы представления автоматически запрашиваются для всех методов контроллера или компонента если вы конечно принудительно не завершите выполнения метода (это требуется к примеру в ajax запросах где не всегда нужны файлы представления).
  7. update - содержит файлы обновлений плагина. Подробнее с процессом обновления плагина можно ознакомиться в разделе - Обновление плагина.
  8. init.php - является входной точкой плагина. Т.е данный файл запускается всегда при любом запросе. Его основной задачей является регистрация маршрутов плагина (Маршрутизация и контроллеры), а также какой-либо дополнительной функциональности, к примеру регистрация или реагирование на какие-либо системные события.
  9. cron.php - выполняет фоновые задачи плагина с помощью планировщика задач CRON. Подробнее о планировщике можно прочесть в разделе - Cron (Планировщик задач). Следует отметить, что данный файл не обязательно должен присутствовать в плагине. Если вы не использует CRON вы можете просто удалить его из плагина. Если файл все-таки есть в плагине то он будет автоматически подключен и использован системой.
  10. activate.php - в данный файл можно вынести логику плагина которая будет запущена когда администратор активирует плагин в админ панели или установит его. К примеру после активации плагина вы можете зарегистрировать виджеты (подробнее в разделе - Виджеты) на страницах сайта или добавить новые пункты меню. Данный файл опционален, т.е может не присутствовать в плагине если в нем нет нужды. Если файл все-таки есть в плагине то он будет автоматически подключен и использован системой.
  11. deactivate.php - в данный файл можно вынести логику плагина которая будет запущена когда администратор деактивирует плагин или деинсталлирует его в админ панели. К примеру после деактивации плагина вы можете удалить ранее добавленые виджеты плагина со страниц сайта. Данный файл опционален, т.е может не присутствовать в плагине если в нем нет нужды. Если файл все-таки есть в плагине то он будет автоматически подключен и использован системой.
  12. install.php - данный файл запускается только при установке плагина, его можно использовать для того, чтобы выполнить SQL запросы создающие таблицы в базе данных, для импорта файла переводов (подробнее в разделе - Файлы переводов), регистрации настроек плагина, регистрации групп и действий авторизации (подробнее в разделе - Авторизация). Данный файл опционален, т.е может не присутствовать в плагине если в нем нет нужды. Если файл все-таки есть в плагине то он будет автоматически подключен и использован системой.
  13. uninstall.php - данный файл запускается только при деинсталяции плагина, его можно использовать для того, чтобы удалить ранее созданные таблицы в базе данных и.т.д. Следует отметить, что большинство ресурсов такие как: файлы переводов, группы и действия авторизации, настройки плагина удаляются автоматически и нет нужды их в ручную удалять в этом файле. Данный файл опционален, т.е может не присутствовать в плагине если в нем нет нужды. Если файл все-таки есть в плагине то он будет автоматически подключен и использован системой.
  14. plugin.xml - содержит описание плагина и является обязательным, ниже мы покажем и расскажем про структуру данного файла.

Описание файла plugin.xml:

<?xml version="1.0" encoding="utf-8"?>
<plugin>
    <name>My Super Plugin</name>
    <key>superplugin</key>
    <description>My super plugin.</description>
    <author>Me</author>
    <authorEmail>me@oxwall.org</authorEmail>
    <authorUrl>http://www.me.com</authorUrl>
    <developerKey>MY_DEV_KEY</developerKey>
    <build>1</build>
    <copyright>(C) 2015 My. All rights reserved.</copyright>
    <license>OSCL</license>
    <licenseUrl>http://www.oxwall.org/store/oscl</licenseUrl>
</plugin>
  1. В секции name пишем название плагина.
  2. В секции key пишем название плагина без пробелов в нижнем регистре используя только символы латиницы, а также цифры [a-z0-9]. Также нужно удостовериться, что плагина с таким ключом не существует, сделать это можно здесь.
  3. В секции description пишем краткое описание плагина, что он делает или умеет.
  4. В секции author пишем имя разработчика плагина.
  5. В секции authorEmail пишем email разработчика плагина.
  6. В секции developerKey пишем ключ разработчика плагина. Данный ключ будет использоваться для получения обновлений плагина. Подробно как получить ключ разработчика и начать продавать собственные плагины описано в разделе - Ключи разработчика и плагина.
  7. В секции build пишем номер билда плагина.
  8. В секции copyright пишем информацию об авторских правах на плагин.
  9. В секции license пишем о типе используемой лицензии плагина.
  10. В секции licenseUrl указываем url где мы можем познакомиться подробнее с типом выбранной лицензией плагина.