Создание плагина
Если вы планируете дорабатывать систему под свои нужды, то сделать это можно разработав свой плагин. Таким образом, ваша модификация будет совместима с обновлениями системы.
В этой статье мы на примере плагина “Привет, мир!” разберем как создать свой плагин в системе.
Предыстория
Изначально проект использовал Symfony PHP Framework версии 1.3. Но со временем поддержка данной версии фреймворка прекратилась, и я принял решение не использовать какой либо фреймворк, чтобы не зависеть от него, однако, при написании программы я создал схожую архитектуру.
Сторонние библиотеки
По умолчанию подключены: jQuery, jQuery UI, Bootstrap 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” выполняются следующие действия:
plugins\hello\application_top.php
(необязательный файл)
В данном файле подключите все необходимые библиотеки.plugins\hello\modules\my_page\module_top.php
(необязательный файл)
Данный файл подключается при любых действиях на этой странице. Может использоваться для проверки доступа и т.д.plugins\hello\modules\my_page\actions\index.php
(необязательный файл)
Обработчик действий.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.