Модуль это набор скриптов (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 - тэги
Вход