Разработка плагинов для UserCMS
Разработка плагинов мало чем отличается от этапов разработки блоков для UserCMS.
Для начала необходимо придумать название латиницей и без пробелов. Поскольку мы будем рассматривать разработку плагина на примере Простой формы обратной связи, то в примере нужно заменить
на свое название.
Последовательность такова:
1. создаем папки (simple_feedback заменить на свое название):
/modules/plugins/simple_feedback/
/modules/plugins/simple_feedback/views/
2. создаем файлы (simple_feedback заменить на свое название):
/modules/plugins/simple_feedback/views/index.tpl
/modules/plugins/simple_feedback/views/settings.tpl
/modules/plugins/simple_feedback/controller_plugin_simple_feedback.php
/modules/plugins/simple_feedback/model_plugin_simple_feedback.php (не обязательно)
3. напишем код вида index.tpl, . Для начала достаточно вид заполнить простейшим html кодом, чтобы понять что наш вид подключился в нужном месте и выведем несколько переменных для примера.
В нашем случае пока вид будет иметь такой код:
Заголовок формы
Переменная а: Переменная b:
Слегка измененный код напишем в виде settings.tpl
Настройки формы
Переменная а: Переменная b:
4. напишем контроллер. Контроллер должен представлять из себя класс с названием полностью совпадающим с названием файла без расширения, в нашем случае controller_plugin_simple_feedback, соответсвенно минимальный код контроллера:
data['a'] = 10; $this->data['b'] = 20; $this->page['html'] = $this->load_view(); return $this->page; } public function action_activate($plugin) { if (isset($_POST['activate'])) { $this->page['params'] = serialize(array( 'a' => $_POST['a'], 'b' => $_POST['b'] )); } else { $this->data['a'] = ''; $this->data['b'] = ''; } $this->page['html'] = $this->load_view('settings'); return $this->page; } public function action_settings($plugin) { if (isset($_POST['settings'])) { $this->page['params'] = serialize(array( 'a' => $_POST['a'], 'b' => $_POST['b'] )); } else { $this->data['a'] = ''; $this->data['b'] = ''; } $this->page['html'] = $this->load_view('settings'); return $this->page; } public function action_deactivate($plugin) { } }
4.1 метод action_index - основная функция, в ней вывод формы, и если отправлены данные, то обработка
Через нее мы и выводим саму форму, в частности переменная $this->data куда заносятся переменные для вида, то есть $this->data['a'] = 10; позволяет использовать $a в виде который мы подключим ниже.
$this->page['html'] = $this->load_view('settings'); - подключает вид.
return $this->page; - обязательная строка.
4.2 функция action_activate - функция для активации плагина
4.3 функция action_deactivate - функция для деактивации плагина
4.4 функция action_settings - настройки плагина после активации, например изменить количество новостей в анонсе.
5. добавляем запись в installed_modules (можно через админер, можно по ссылке /admin/modules_manager/manual_install)
6. активируем модуль
7. собираем архив для установки и выкладываем на сайте или присылаем на адрес: info@unibix.ru
как собрать zip архив:
7.1 архиваруем внутренности папки modules
7.2 удаляем лишние файлы и папки за исключением папки нашего модуля (таким образом сохранится вложенность папок, установщик модуля распакует содержимов в папку modules)
7.3 добавляем файл install.php для установки, update.php для обновления в корень архива
7.4 внутри него мы можем выполнять любые действия, например создать необходимые записи в базу данных, различные проверки на нужные зависимости и модули, в общем все что нужно для работы модуля
7.5 добавляем в каталог модулей usercms (каталог в разработке на апрель 2015г)
8. тестируем