Структура UI - aix27249/agiliarepo GitHub Wiki

UI представляет из себя модульную структуру с четким разделением кода по модулям.

Общая идея

Общий принцип достаточно прост: в шаблоне (/templates/имя_шаблона/template_body.php) определены именованные регионы вывода, а в настройках страниц указано, какие модули в каком регионе и в каком порядке выводить.

Шаблоны

Шаблон определяет базовый html-шаблон вывода, а так же список css и js, подгружаемых вместе с шаблоном. Его настройки лежат в /templates/имяшаблона/template.php, говорящий сам за себя пример смотрите в коде.

Модули

Модули лежат в /modules, каждый из модулей находится в своей поддиректории с именем, равным имени модуля. Код модуля произвольный, но должен начинаться с файла module.php. Если модуль чего-то выводит (что, вообще говоря, не обязательно - он может являться библиотекой кода) - то его код должен содержать класс Module_имямодуля, унаследованный от класса Module, и содержать функцию run(), возвращаемое значение которой и будет выводиться в указанный регион. Если нужно вывести некие данные "как есть" (без вывода остальных частей шаблона и модулей) - используйте функцию die().

В статических переменных $styles и $scripts класса модуля можно определить массивы используемых css и js, при этом пути либо относительно директории модуля, либо абсолютные.

Страницы

Каждая отдельная страница определяется в /pages/имя_страницы.php. Такой подход отчасти накладывает ограничения на глубину ссылок (нельзя стандартным способом определить страницу вида www.example.net/page1/page2), но в данном случае является приемлемым балансом между возможностями и простотой кода.

Каждый файл страницы определяет заголовок страницы, а так же набор модулей, характерных для данной страницы, и их расположение по регионам. Кроме того, возможно указать использование другого шаблона для вывода этой страницы.

Специальные имена имеют корневая страница - она зовется home.php, и страница вывода ошибки 404 - она зовется 404.php.

Код ядра

Код внутри директории /includes занимается обработкой всего вышеописанного и выдачей результата.

Файлы конфигурации лежат в директории /conf. Они содержат настройки, так или иначе влияющие на весь сайт. В *.example лежат примеры таких настроек, ниже я расскажу про конкретные файлы: их три. defaults.conf.php - набор внутренних настроек php, таких как кодировка и отображение ошибок. page.conf.php - содержит настройки, общие для всех страниц. В данный момент - настройки модулей, а именно - информацию о модулях и их расположению в регионах вывода. site.conf.php - настройки, общие для всего сайта, такие как title, расположение favicon, используемый template по умолчанию.