Разработка плагинов для 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 кодом, чтобы понять что наш вид подключился в нужном месте и выведем несколько переменных для примера.
В нашем случае пока вид будет иметь такой код:

Заголовок формы

Переменная а: <?php echo $a; ?> Переменная b: <?php echo $b; ?>


Слегка измененный код напишем в виде settings.tpl

Настройки формы

Переменная а: <?php echo $a; ?> Переменная b: <?php echo $b; ?>
4. напишем контроллер. Контроллер должен представлять из себя класс с названием полностью совпадающим с названием файла без расширения, в нашем случае controller_plugin_simple_feedback, соответсвенно минимальный код контроллера:

<?php
class controller_plugin_simple_feedback extends plugin {	

public function action_index($plugin) {
    $params = unserialize($plugin['params']);
    $this--->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. тестируем
Создание и продвижение сайтов: Unibix