Разработка плагинов для UserCMS



Разработка плагинов мало чем отличается от этапов разработки блоков для UserCMS.



Для начала необходимо придумать название латиницей и без пробелов. Поскольку мы будем рассматривать разработку плагина на примере Простой формы обратной связи, то в примере нужно заменить

simple_feedback

на свое название.





Последовательность такова:





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. тестируем