Создание собственного модуля

Материал из Smart Core Wiki

Перейти к: навигация, поиск

ВНИМАНИЕ! информация на этой странице может быть не актуальной.

Ниже будет описана пошаговая инструкция, как можно создать свой модуль с нуля. Для более детальной документации можно обращаться к статье API модулей, а лучше заглядывать в сам исходный код системы т.к. документация может быть не всегда актуальной.

Создание файлов модуля

Прежде всего создадим папку для нового модуля, предположим модуль будет называться "MyModule". В этом случае либо в папке \system\Modules\, либо \application\Modules\ надо создать эту саму папку MyModule.

Следующим шагом можно воспользоваться пустыми заготовками для классов модулей, которые находятся в папке \system\Modules\_blank, копируем все файлы (на данный момент description.xml пока не используется) например в папку \application\Modules\MyModule, затем переименовываем названия файлов _.php и _.tpl в MyModule.php и MyModule.tpl соответственно.

Затем необходимо отредактировать файлы MyModule.php и Admin.php, и в объявлении классов, вместо знаков "???" вписать MyModule.

В принципе на данном этапе модуль уже можно считать вполне состоявшимся ;) и при подключении его в систему, он будет выдавать сообщение "Hello World.".

Итоге файл MyModule.php будет иметь следующий вид:

<?php
class Module_MyModule extends Module
{
  // Некоторая переменная.
  protected $val;
 
  protected function init()
  {
    // Установка значений параметров по умолчанию.
    $this->Node->setDefaultParams(array(
      'val' => 123,
      ));
 
    // Инициализация свойства класса значением взятым из параметра подключения ноды.
    $this->val = $this->Node->getParam('val');
  }
 
  public function run($parser_data)
  {
    // Все выходные данные надо складывать в массив $this->output_data
    $this->View->new_module = $this->getTpl() . ' under construction.';
  } 
}

А файл MyModule.tpl может иметь следующий формат:

<?php
echo $this->new_module;

т.е. в шаблон поступает в виде массива с именем $data, все данных которые были помещены классом модуля в массив $this->output_data.

В результате в месте подключения ноды в итоговой HTML странице, отобразится результат в виде строки 'MyModule under construction.'.

Подключение модуля

Для того, чтобы модуль стал доступен из тулбара, его надо зарегистрировать в списке модулей, пока это можно сделать только ручками, прописав в таблице engine_modules.

После того как модуль зарегистрирован в системе, его можно добавлять в любое место, нажав в тулбаре Меню -> Структура -> Добавить модуль (ноду).

Для того, чтобы редактирование модулем стало доступно из панели управления, надо описать метод public function admin($uri_path) в классе Module_MyModule_Admin.

Личные инструменты
Пространства имён
Варианты
Действия
Основные разделы
Ссылки
Навигация
Инструменты