Схема работы ядра и порядок запуска модулей



Чтобы успешно работать с UserCMS нужно понимать как он работает изнутри (всю его подноготную), а это кстати не сложно понять.



Начинается конечно всегда при любом урле с файла index.php



Откройте его.



Как видите сначала подключаются три ядра, которые друг друга наследуют



require(ROOT_DIR . '/user_cms/user_cms_core.php');

require(ROOT_DIR . '/user_cms/user_cms_core_edition.php');

require(ROOT_DIR . '/modules/core.php');



Потом запускается приложение, создавая объект $u



$u = new core();

Тем самым мы запускаем констурктор ядра, то есть в файле

/user_cms/user_cms_core.php



выполняется function __construct()



Далее



$u -> load_addons('before');

то есть запускается function load_addons() из /user_cms/user_cms_core.php

фактически смотрится какие аддоны активаированы в позиции before и производится их запуск, то есть $a = $this->load_addon($addon);





Далее



$u -> load_component();

Определяется какой компонент надо запустить, см.

редактируем все





и потом на основе его контроллера создается объект и запускается нужны action_xxxxx или action_index() - по умолчанию



$c = new $component_full_name($this -> config, $this -> url,$this -> component, $this -> dbh);

$component_action_name = 'action_' . $this -> component['action'];





Далее

в index.php идут сделующие строчки



$u -> load_theme(); //загрузка темы и определение какие в ней есть позиции

$u -> load_blocks(); // згрузка блоков, понимая какие есть позиции и какие в них активированы блоки

$u -> load_plugins(); // загрузка плагинов, найдя фигурные скобки вида { plugin:XXXXX=YYYY }

$u -> load_addons('after'); // загрузка аддонов, но в позиции афтер

$u -> load_pre_echo(); // компоновка всех кусков html кода (компонента, блоков, плагинов) в единый html код



все эти функции (методы класса) тоже можно посмотреть в /user_cms/user_cms_core.php





Далее идет вывод





echo $u -> html



именно это свойство нашего класса и содержит весь html код будущей страницы





Далее удаление объекта, тем самым запуск деструктора в которым закрытие соединения с базой.



Вот как-то так.