Структура модуля

Создание модуля начинается со структуры. Сначала нам необходимо придумать нашему модулю имя.

Имя модуля должно начинаться с префикса mod_ В примере будем использовать mod_hello_prologue

Поехали!

Создадим папку /pr/modules/mod_hello_prologue/

Теперь нам необходимо создать обязательные файлы:

  • /pr/modules/mod_hello_prologue/mod_init.php - файл для инициализации модуля
  • /pr/modules/mod_hello_prologue/mod_description.php - файл для описания модуля
  • /pr/modules/mod_hello_prologue/mod_adapter.php - адаптер
  • /pr/modules/mod_hello_prologue/mod_controller.php - контроллер модуля

mod_init.php

Файл служит установщиком модуля. В данном файле создаются записи на права доступа к модулю и строится вся его инфраструктура.

Подробнее про права доступа: Уровни доступа

Пример:


defined('PROLOGUE__FRAMEWORK') or die ;

/* Права доступа */

PrAccess::add_level_access('Доступ к модулю Hello Prologue (чтение)', 'mod_hello_prologue_READ', '4000');
PrAccess::add_level_access('Доступ к модулю Hello Prologue (запись)', 'mod_hello_prologue_RECORD', '4100');
PrAccess::add_level_access('Доступ к модулю Hello Prologue (полный)', 'mod_hello_prologue_ALL', '4200');

 

mod_description.php

Данный файл является паспортом модуля. Он отвечает за представление модуля в списке модулей.

Пример:


defined('PROLOGUE__FRAMEWORK') or die ;

if (PrAccess::get_access('mod_hello_prologue_READ')) {
	return array(
		'name' => 'Hello Prologue',
		'description' => 'Обучающий модуль Hello Prologue',
		'icon-class' => 'fa fa-graduation-cap',
	);
}

 

name - Название модуля

description - Описание модуля

icon-class - это css класс иконки модуля, подобрать иконку можно тут https://fontawesome.com/icons

 

mod_adapter.php

Файл который адаптирует функционал мдуля в различные места ядра. С помощью этого файла можно вносить любые изменения в систему.

Список доступных адаптов тут.

Пример:


defined('PROLOGUE__FRAMEWORK') or die ;

/*
 * Адаптер обеспечивает подключение модуля к некоторым ключевым компонентам ядра
 *
 */

switch ($fileAdapt) {
	case '/Project/core/prologue.php' :
			// code
		break;
	case '/Project/views/render.php' :
		// use $html - весь html страницы
		break;
}

 

mod_controller.php

Контроллер админ части модуля.

Пример:


defined('PROLOGUE__FRAMEWORK') or die ;

Class ModController extends PrController {

    public function index() {

        if (!PrAccess::get_access('mod_hello_prologue_READ')) {
            $this -> error(403);
        }

        $this -> component('admin/init');

        $this -> css('/pr/modules/mod_hello_prologue/static/css/style.css');
        $this -> js('/pr/modules/mod_hello_prologue/static/js/script.js');

        $this -> lang('mod_hello_prologue');

        $this -> init([]);

        $this -> view -> display('/pr/modules/mod_hello_prologue/view/main');
    }

}

 

Директории модуля

Необходимо создать следующие папки:

  • components - компоненты модуля
  • incl - классы модуля
  • lang - языковые директории и файлы локали
  • models - модели модуля
  • static - статика. Изображения, css, js и т.д.
  • view - Представление модуля

Скачать пример модуля