Кастомизация интерфейса

Кастомизация интерфейса в FirstWork реализована через систему тем, которые позволяют изменять внешний вид платформы без изменения ядра. Темы устанавливаются через административную панель, где встроенный загрузчик принимает ZIP‑архив и выполняет полный цикл проверки и установки. Пользователь не управляет структурой вручную, так как система автоматически определяет корневую директорию темы, проверяет её корректность и размещает в каталоге templates.

Загрузчик тем распаковывает архив во временную директорию и анализирует его содержимое. Система определяет корневую папку темы и проверяет наличие обязательных файлов. Темы должны содержать конфигурационный файл theme.php и основной шаблон layout, размещённый в каталоге layout. Отсутствие любого из этих элементов делает установку невозможной. Для обеспечения безопасности система запрещает наличие любых дополнительных PHP‑файлов внутри темы, кроме theme.php. Если в структуре обнаружены PHP‑файлы, загрузка темы прерывается.

Файл theme.php считывается как текст и используется для получения конфигурации темы. Конфигурация должна содержать идентификатор и название темы. После проверки данных система определяет путь установки и запрещает перезапись существующей темы. Если тема с таким идентификатором уже существует, установка блокируется. Это предотвращает случайную замену активных или пользовательских тем. После успешной проверки тема переносится в каталог templates, а временные файлы удаляются.

После установки темы система автоматически синхронизирует её с базой данных. Загрузчик тем сканирует каталог templates, определяет доступные темы и сравнивает их с записями в базе данных. Темы, отсутствующие в базе, добавляются автоматически. Темы, отсутствующие на диске, удаляются из базы. Активная тема определяется через базу данных, и при её загрузке система выполняет функцию init, если она определена в конфигурации. Это позволяет теме выполнять собственные действия при активации.

Система использует механизм подстановки путей, который обеспечивает корректное подключение ресурсов активной темы. Функция StyleLink формирует ссылку на директорию активной темы, что позволяет шаблонам и стилям подменять стандартные файлы интерфейса. Если тема содержит собственные шаблоны, они автоматически используются системой. При отсутствии отдельных файлов система применяет стандартные шаблоны, что обеспечивает совместимость и предотвращает ошибки.

Архитектура тем полностью изолирована от ядра и не влияет на работу backend‑логики. Все изменения ограничиваются визуальным уровнем, что делает кастомизацию безопасной и устойчивой к обновлениям. При обновлении платформы темы сохраняются и продолжают работать, если не затрагивают изменённые шаблоны. Такой подход обеспечивает гибкость и позволяет адаптировать внешний вид системы под любые требования без изменения её внутренней структуры.