ALBIREO CMS
version: 2025.07.15

Алгоритмы работы Albireo CMS

Точка входа

  • Все запросы принимаются на корневой index.php — таковы настройки .htaccess.
  • В index.php определяется константа FRONT_NAME, которая указывает на каталог сайта — по умолчанию это website.
  • Происходит подключение FRONT_NAME/index.php.

Запуск сайта

Файл FRONT_NAME/index.php отвечает за запуск сайта. Изначально в нём определяются базовые константы, которые хранят основные пути к каталогам.

После этого происходит последовательное выполнение:

  • загрузка ядра системы SYS_DIR/loader.php,
  • проверка блокировки IP,
  • проверка заданных редиректов,
  • подключение пользовательских констант,
  • регистрация PSR4-autoload,
  • запуск механизма сессий,
  • проверка создания .htaccess и robots.txt,
  • формирование данных по текущему URL,
  • получение данных записей,
  • обработка AJAX-запросов по адресу _request_ajax,
  • поиск соответствия входящего URL и php-файла записи,
  • вывод страницы через layout-файл,
  • вывод отладочной информации через встроенную debug-панель.

Хранение кэша и работа с записями сайта

Все записи/страницы сайта хранятся в отдельных php-файлах в каталоге website/pages. Каждый файл страницы должен иметь служебную часть в виде php-комментария /** **/, только в этом случае она будет считаться записью/страницей сайта.

При запуске сайта, система будет проверять наличие изменений в файлах и структуре каталогов. На основе этих изменений будет построен кэш в виде SQLite-таблицы. Таким образом информация о записях будет храниться в базе данных.

В последующем, для того, чтобы сделать выборку, используются обычные SQL-запросы.

Такая схема позволяет организовать хранение нескольких тысяч файлов для одного сайта. Тестирование показывает, что Albireo CMS может работать с 10 000 записями без особых проблем.

Основная нагрузка будет лежать на построении кэша. Это зависит от мощности сервера.

Работа шаблона

Все шаблоны располагаются в website/templates, каждый в своём каталоге. По умолчанию используется шаблон default.

В шаблоне есть каталог layout, который хранит файлы, которые подключаются как основной файл страницы.

Например, если у страницы pages/about.php указан layout: default.php, то будет подключен файл website/templates/default/layout/default.php. Этот файл обеспечивает корректное формирование html-кода, на основе настроек (полей) страницы.

Уже в рамках default.php происходит непосредственное подключение файла pages/about.php.

Таким образом алгоритм будет следующий:

  • система определяет по входящему URL, соответствующий ему php-файл (страница),
  • система получает из полей страницы шаблон и layout-файл,
  • система подключает этот layout-файл,
  • внутри layout-файла происходит подключение php-файла страницы.

Такая схема работы позволяет использовать множество layout-файлов под разные задачи в рамках одного шаблона.

Расширение функциональности

Часто стоит задача: внести небольшое изменение в файл, не меняя при этом остальную функциональность. Например если нужно поменять данные в файле шапки, то есть два пути.

  • Первый — непосредственно открыть файл шаблона и внести правки. В этом случае обновление системы затрёт эти правки.
  • Второй — использовать альтернативный каталог, который повторяет исходный. Система сама определит, что файл размещен в альтернативном каталоге и подключит именно его.

🔹Каталог website/service/my

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

website/
    service/
        my/
            extras/
            modules/
            parts/
            tpl/

Эти подкаталоги повторяют структуру каталога шаблона Default.

🔹Каталог website/config

Этот каталог используется для хранения файлов конфигурации. Если файла нет, то будет использован каталог system/config.

ВАЖНО! Не нужно менять файлы в system/config. Вместо этого нужно скопировать файл в website/config и работать уже с ним.

🔹Рекурсивные config-файлы

Некоторые config-файлы система обрабатывает рекурсивно на уровне каждой опции. Это позволяет хранить в этих файлах только изменённые ключи по сравнению с файлом из system/config.

  • website/config/config.php
  • website/config/page-data.php
  • website/config/admmn.php

Остальные файлы следует копировать целиком.

🔹Каталог website/service/functions

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

🔹Каталог website/service/psr4

Здесь можно разместить php-классы, которые будут подключены через PSR4-автозагрузку.

Например:

# website/service/psr4/Demo/Demo.php

namespace Demo;

class Demo
{
    public function test()
    {
        echo 'This Demo class';
    }
}

Использование:

$demo = new \Demo\Demo;
$demo->test();

🔹Каталог website/service/widgets

Здесь можно размещать собственные виджеты по тому же принципу, что и в system/widget.