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

В этой статье мы на примере плагина “Привет, мир!” разберем как создать свой плагин в системе.

Предыстория

Изначально проект использовал Symfony PHP Framework версии 1.3. Но со временем поддержка данной версии фреймворка прекратилась, и я принял решение не использовать какой либо фреймворк, чтобы не зависеть от него, однако, при написании программы я создал схожую архитектуру.

Сторонние библиотеки

По умолчанию подключены: jQueryjQuery UIBootstrap 3 и вы можете использовать функции этих библиотек.

Начало работы

Скачайте плагин “Привет, мир!” и распакуйте архив в папку /plugins
Откройте файл /config/server.php и в переменную AVAILABLE_PLUGINS добавьте “hello” в результате у вас должен получится следующий код:
define('AVAILABLE_PLUGINS','ext,hello');
В данной переменной перечислены все доступные плагины, которые будут автоматически подключатся.

Ссылка на страницу

В результате у вас, как администратора системы, должна появиться ссылка на страницу “Привет, мир!” в левом меню. Нажмите на нее и вы попадете на страницу с кнопкой “Отправить сообщение”.

Ссылка выглядит следующим образом:
[ваш сайт]index.php?module=hello/my_page/index
hello — название плагина.
my_page — название страницы.
index — название действия.

Поведение программы

При открытии страницы “index.php?module=hello/my_page/index” выполняются следующие действия:

  1. plugins\hello\application_top.php (необязательный файл)
    В данном файле подключите все необходимые библиотеки.
  2. plugins\hello\modules\my_page\module_top.php (необязательный файл)
    Данный файл подключается при любых действиях на этой странице. Может использоваться для проверки доступа и т.д.
  3. plugins\hello\modules\my_page\actions\index.php (необязательный файл)
    Обработчик действий.
  4. plugins\hello\modules\my_page\views\index.php
    Вывод контента.

Ссылка в программе формируется с помощью специальной функции url_for()
url_for('hello/my_page/index','action=send')
Функции для работы с ссылками расположены в файле includes\functions\urls.php

HTML форма и всплывающее окно

После нажатия на кнопку “Отправить сообщение”, откроется всплывающее окно с простым полем для ввода текста. Пример такой формы расположен в файле plugins\hello\modules\my_page\views\form.php
Функции для работы с html формами расположены в файле includes\functions\html.php

MySQL Запрос

Пример запроса к базе данных вы найдете в файле plugins\hello\classes\my_class.php
$user_info_query = db_query("select * from app_entity_1 where id='" . $app_user['id'] . "'");
if($user_info = db_fetch_array($user_info_query))

В данном запросе мы выбираем информацию о текущем пользователе.
Функции для работы с базой данных находятся в файле includes\functions\database.php

$app_user - это сессионная переменная, в которой хранится информация о текущем пользователе. group_id — это текущая группа доступа. Для администраторов group_id=0.

Меню

Файл plugins\hello\menu.php подключается автоматически. В этом файле можно указать ссылку на страницу в меню.
$app_plugin_menu['menu'][] = array('title'=>TEXT_PLUGIN_HELLO_WORLD,'url'=>url_for('hello/my_page/index'),'class'=>'fa-anchor');
menu — основное меню
reports — меню “Отчеты”
account_menu — меню пользователя в верхнем правом углу.

В основном меню можно создавать вложенные меню, пример:
$s = array();
$s[] = array('title'=>TEXT_PLUGIN_HELLO_WORLD,'url'=>url_for('hello/my_page/index'),'class'=>'fa-anchor');
$app_plugin_menu['menu'][] = array('title'=>TEXT_PLUGIN_HELLO_WORLD,'url'=>url_for('hello/my_page/index'),'class'=>'fa-anchor','submenu'=>$s);

Публичная страница

Чтобы разрешить доступ к странице без входа в систему, в папке плагина создайте файл public_modules.php и добавьте следующий код:

<?php
$allowed_modules[] = 'hello/my_page/index';

Затем откройте файл  plugins\hello\modules\my_page\actions\index.php и в конец файла добавьте следующий код:

$app_layout = 'public_layout.php';

файл public_layout.php расположен в папке template\public_layout.php. На его основе можно создать собственный шаблон, например my_public_layout.php, и использовать его в переменной $app_layout.