Модули

Модуль это набор скриптов (PHP, JS) а также дополнительных графических элементов, шаблонов и т.п.

Модули размещаются в системной папке /sys/modules. Каждый модуль хранится в отдельной папке.

Например для модуля с именем ModuleName папка /sys/modules/ModuleName должна содержать как минимум два файла: ModuleName.php и ModuleName-rpc.php

В файле ModuleName.php должен быть определён класс ModuleName с обязательными методами:

  1. void __construct(&argv)
  2. string description(&argv)
  3. array getOptions()
  4. int generate(&$argv)
  5. 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();
?>

Перечень модулей

  1. advertiser - реклама
  2. article - отображение документов, списков документов
  3. AssetCalendar - каледарь
  4. category - разделы сайта
  5. comments - форум, блог
  6. FileArchive - файловый архив
  7. Forms - формы
  8. gallery - фотогалереи
  9. group - группы пользователей
  10. MenuGenerator - генераторы меню, подменю
  11. Navigator - комплексный виджет
  12. news - новости
  13. profile - профильпользователя
  14. registration - регистрация
  15. TAGs - тэги

 

: Контекст, Модули