Структура 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 по умолчанию.