Раширяемость WEB-NICK Framework состоит из компонентов, модулей, плагинов и шаблонов. Модули, плагины, компоненты и шаблоны, которые будут вызваны по-умолчанию, определяются в файле  "config/default_extensions.php".

Шаблоны:

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

Шаблон по-умолчанию задается значением в массив $default_extensions["templates"], в файле "config/default_extensions.php". Это имя папки шаблона в папке "templates". Имя главного файла шаблона (точка входа шаблона) определяется свойством $EXTENSIONS_ENTRY_POINT_TP в файле config/config.php.

Структура шаблона:

Шаблон состоит из HTML-кода с добавлением специальных вставок {} (шаблонизатор HTML_Template_IT), в которых следует имя от вставляемого модуля, или {components}, если необходимо вставить результат выполнения компонента.

В самую первую строчку шаблона рекомендуется вставить {notice_PHP}, если необходимо выносить предупреждения PHP в верхнюю часть сайта (смотрите свойство $NOTICE_PHP_ON_TOP и $CH_NOTICE_PHP_STRING в файле "config/default_extensions.php". )

В тег <head> шаблона необходимо вставить блок {head}, чтобы иметь возможность динамически добавлять в этот тег значения.


Компонент:

Компонент является главным элементом в расширяемости WEB-NICK Framework. Вызываемый компонент на странице может быть только один.

Вставка в шаблон происходит путем добавления {components} в HTML-код, и обычно идет посередине шаблона, так как компонент выполняется только один, и предполагается что визуальный результат его выполнения есть самый главный результат для WEB-страницы.

Компонент по-умолчанию задается значением в массив $default_extensions["components"], в файле "config/default_extensions.php". Это имя папки компонента в папке "components". Имя главного файла компонента (точка входа компонента) определяется свойством $EXTENSIONS_ENTRY_POINT в файле config/config.php.

Компонент который будет вызван на следующей странице WEB-сайта определяется в строке запроса браузера через параметр "component" или "com". Например: http://ваш_сайт.ком/?com=register.

Компонент должен определить используемые далее на странице модули, или их отсутствие, иначе будут использоваться модули по-умолчанию из массива $default_extensions["modules"].

Определение модулей происходит через код: $WN_Extensions->set_modules(массив с модулями) или $WN_Extensions->set_modules(false) если модули на странице не нужны. "Массив с модулями" - аналогичный по структуре массив, как и значение массива $default_extensions["modules"].

Модули:

Модули являются вспомогательными визуальными частями на сайте. Вызываемых модулей на странице может быть сколько угодно.

Модули по-умолчанию задается значением в массив $default_extensions["modules"], в файле "config/default_extensions.php". Это имя отображения в шаблоне + имя папки модуля в папке "modules". Имя главного файла модуля (точка входа модуля) определяется свойством $EXTENSIONS_ENTRY_POINT в файле config/config.php.

Имя папки модуля  и имя отображения в шаблоне рекомендуется делать одно и то же. Например $default_extensions["modules"]["top"] = "top" означает что будет запущен модуль "top" и в шаблоне будет происходить поиск блока {top}, для вставки визуального результата  работы этого модуля.

Если модули на сайте не нужны, то необходимо в файле  "config/default_extensions.php" написать $default_extensions["modules"] = false;

Всегда запускаемые модули:
Обычные модули могут определяться динамически из компонента (смотрите описание работы с компонентом). Однако есть модули которые необходимо запускать всегда. Такие модули определяются значением массива $default_extensions["modules_always_run"] по тем же правилам что и обычные модули.

Плагины:

Плагины являются вспомогательными НЕ визуальными частями на сайте. Вызываемых плагинов на странице может быть сколько угодно. Предполагается что плагин не генерирует никакой HTML-код (в отличии от компонентов и модулей), поэтому определять блоки в шаблоне для него не надо.

Плагины по-умолчанию задаются значением в массив $default_extensions["plugins"][], в файле "config/default_extensions.php". Это имя папки плагина в папке "plugins". Имя главного файла плагина (точка входа плагина) определяетя свойством $EXTENSIONS_ENTRY_POINT в файле config/config.php.

Практический пример реализации:

Пользователь заходит на главную страницу сайта http://ваш_сайт.com. CMF обращается к файлу "config/default_extensions.php" и определяет какие нужны расширения.

Порядок запуска расширений:

CMF сначала запускает все плагины, затем компонент и все модули. После этого загружается файл шаблона, в котором ищутся нужные блоки, для вставки в них HTML-результата работы модулей и компонента.

Далее пользователь заходит на следующую страницу сайта, например вида: http://ваш_сайт.ком/?com=register. Запускается компонент "register", который отрабатывает свои задачи, генерирует HTML-код, определяет какие на это странице нужны модули, и какой нужен шаблон.

Подробнее на странице с описанием API для расширений.