Модуль это набор скриптов (PHP, JS) а также дополнительных графических элементов, шаблонов и т.п.
Модули размещаются в системной папке /sys/modules. Каждый модуль хранится в отдельной папке.
Например для модуля с именем ModuleName папка /sys/modules/ModuleName должна содержать как минимум два файла: ModuleName.php и ModuleName-rpc.php
В файле ModuleName.php должен быть определён класс ModuleName с обязательными методами:
- void __construct(&argv)
- string description(&argv)
- array getOptions()
- int generate(&$argv)
- void __destruct()
Параметр argv это хеш массив с контекстом вызова метода:
- $Context['Object'] - текущий объект (контейнер)
- $Context['Module'] - параметры модуля
- ['ModuleName'] - название модуля
- ['ModuleArg'] - параметр, передаваемый из шаблона, как правило содержит название команды которую необходимо выполнить
- ['ModuleArg2'] - параметр, передаваемый из шаблона, как правило содержит произвольную строку или серализированный объект
- $Context['Hash'] - текущий хеш массив, используемый для заполнения шаблона генерируемого объекта
Файл ModuleName-rpc.php как правило обрабатывает GET и POST запросы.
Пример определения модуля:
<?php LoadLanguageStrings(str_replace($_SERVER['DOCUMENT_ROOT'], '', __FILE__)); $GLOBALS['DynaCont']['system']['debug'][__FILE__] = false; class ModuleName{ private $data; function __construct(&$argv = false){ Debug(__FILE__, __LINE__, "ModuleName __construct"); $this->data = &$argv; } public function description(){ return 'ModuleName module'; } public function getOptions(){ return array('Option1'=>'description of output'); } // generates module output public function generate(&$argv = false){ echo "ModuleName generator..."; } function __destruct(){ Debug(__FILE__, __LINE__, "ModuleName __destruct"); } }; ?>
Пример вызова модуля:
<?php
$Context['Module']['ModuleArg'] = $_GET["cmd"]; $Context['Object'] = new DC2_Storage_Object($_GET["id"]); $module = new ModuleName($Context); $module->generate($Context); die();
?>
Перечень модулей
- advertiser - реклама
- article - отображение документов, списков документов
- AssetCalendar - каледарь
- category - разделы сайта
- comments - форум, блог
- FileArchive - файловый архив
- Forms - формы
- gallery - фотогалереи
- group - группы пользователей
- MenuGenerator - генераторы меню, подменю
- Navigator - комплексный виджет
- news - новости
- profile - профильпользователя
- registration - регистрация
- TAGs - тэги