Модули в MobileCMS состоят из 4х основных частей:
name = "test" title = "Тест" admin_link = "test/admin" description = "Тестовый модуль" author = "Ant0ha" version = "0.1"
<?php /** * Контроллеры модулей происходят от класса Controller. * Название контроллера происходит от названия модуля с большой буквы с окончанием _Controller */ class Test_Controller extends Controller { /** * Доступ к контроллеру (укажем 0 чтобы разрешить доступ каждому пользователю) */ public $access_level = 0; /** * Метод вызываемый по умолчанию */ public function action_index() { # Вызовем главный и единственный метод нашего контроллера $this->action_hello_world(); } /** * Метод выводит "Hello world!" */ public function action_hello_world() { # Ассигнуем переменную для теста модуля $this->tpl->assign(array( 'hello' => "Hello world!" )); # Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views # Будет подключен файл modules/test/views/default/hello_world.tpl $this->tpl->display('hello_world'); } } ?>
<?php class Test_Admin_Controller extends Controller { /** * В доступе к контроллеру пропишем 10, т.е. он доступен только админам сайта. * Чтобы разрешить доступ и модерам, можно будет прописать 8. */ public $access_level = 10; /** * Тема, используемая в контроллере, для админки необходимо указать "admin" */ public $template_theme = 'admin'; /** * Метод вызываемый по умолчанию */ public function action_index() { # Вызовем главный и единственный метод нашего контроллера $this->action_hello_admin(); } /** * Метод выводит "Hello Admin!" */ public function action_hello_admin() { # Ассигнуем переменную для теста модуля $this->tpl->assign(array( 'hello' => "Hello Admin!" )); # Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views # Будет подключен файл modules/test/views/admin/hello_admin.tpl $this->tpl->display('hello_admin'); } } ?>
<?php /** * Название класса инсталлятора также состоит из названия модуля и окончания _installer */ class test_installer { /** * Метод для установки модуля */ public static function install(&$db) { # Создадим таблицу a_test, якобы нужную нашему модулю test $db->query("CREATE TABLE`a_test` ( `item_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `item` VARCHAR( 30 ) NOT NULL ) ENGINE = MYISAM ; "); } /** * Метод для удаления модуля */ public static function uninstall(&$db) { $db->query("DROP TABLE a_test"); } } >В инсталляторе можно не только создавать/удалять таблицы, но так же и создавать/удалять файлы и папки, добавлять правила роутинга, события и т.д.
<?php /** * Название класса виджета также состоит из названия модуля и окончания _widget */ class test_widget { /** * Показ виджета */ public static function display($widget_id) { return 'Это виджет тестового модуля<br />'; } /** * Настройка виджета */ public static function setup($widget) { a_notice('Данный виджет не требует настройки', a_url('index_page/admin')); } } >