Базовые ассеты
В SF4 «ассеты» — это не просто набор подключаемых файлов, а пакеты (бандлы) CSS/JS/HTML-вставок, которые подключаются централизованно и повторно используются шаблоном и компонентами.
Ключевая идея такая:
-
физически ассеты лежат в каталоге
/simai/asset(внутри него — подпапки пакетов и версий); -
подключение в рантайме делает загрузчик ассетов (на стороне PHP), который:
- выбирает пакет по имени,
- выбирает версию (явно или «по умолчанию»),
- добавляет в Bitrix AssetManager нужные CSS/JS/строки.
На практике базовый фронтенд SF4 собирается вокруг пакета simai.framework (ядро интерфейсных стилей/скриптов) + библиотек вроде jQuery/Bootstrap/плагинов (в зависимости от решения и включённых компонентов).
Конфиги ассетов
В SF4 есть два уровня конфигурации:
- Ядро:
/simai/config/.asset.config.php - Сайт/проект:
{site_dir}/simai.data/config/.asset.config.php
Конфиг ассетов — это PHP-файл, который возвращает массив пакетов. У каждого пакета задаются:
name— человекочитаемое имя пакета,dir— подпапка внутри/simai/asset, где лежат версии,url— строковый «канонический» URL (метаданные пакета; подключение выполняется по файловой части из/simai/asset),default— версия по умолчанию,asset— набор версий, где каждая версия — это список «файлов» с типом (style/script/string) и путём.
В загрузчике ассетов используется следующая логика:
- если пакет не найден — загрузка пропускается;
- если версия не указана — берётся
default; - для
styleвызываетсяBitrix\Main\Page\Asset::getInstance()->addCss(...), - для
script—addJs(...), - для
string—addString(...).
Дополнительно учтён режим минификации Bitrix: если включена опция main.use_minified_assets = Y и рядом с файлом существует *.min.css / *.min.js, то подключается минифицированный вариант.
Важное проектное правило, которое вы зафиксировали: конфигурация ассетов сайта замещает, а не дополняет системную. Это означает, что если проект кладёт {site_dir}/simai.data/config/.asset.config.php, то он должен содержать полную (самодостаточную) конфигурацию пакетов, которые нужны сайту (включая базовые), иначе можно «случайно» отключить часть системных подключений.
Пример структуры пакета (укороченный фрагмент из системного конфига):
<?
return [
"simai.framework" => [
"name" => "SIMAI Framework",
"dir" => "/simai.framework",
"url" => "http://framework.simai.studio/",
"default" => "master",
"asset" => [
"master" => [
"dir" => "/sf4.master",
"files" => [
[
"path" => "/css/sf-full.min.css",
"type" => "style",
],
[
"path" => "/js/sf-full.min.js",
"type" => "script",
],
],
],
],
],
];
И пример того, как пакет подключается из PHP (типичная форма вызова):
<?php
\SIMAI\Main\Page\Asset::getInstance()->load('simai.framework');
Конфиг шрифтов
Шрифты в SF4 задаются конфигом шрифтов как реестр «семейств», который затем используется настройками сайта (например, выбор «Шрифт текста», «Шрифт заголовков», «Шрифт меню»).
На практике задействованы:
- системный реестр шрифтов (базовый),
- проектный реестр шрифтов на уровне сайта —
{site_dir}/simai.data/config/.font.config.php(как место, где живут проектные/решенческие шрифты).
Сам конфиг — тоже PHP-массив. В нём встречаются как Google Fonts (через link), так и «локальные» семейства (через type => local).
Укороченный пример:
<?return [
'gfonts' => [
'roboto' => [
'name' => 'Roboto',
'family' => 'Roboto',
'link' => 'https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&display=swap',
],
],
'site' => [
'sf4university' => [
'name' => 'sf4university',
'family' => 'sf4university',
'type' => 'local',
],
],
];
Важно понимать разделение ролей:
- реестр шрифтов отвечает на вопрос «какие шрифты вообще доступны и как их подключать»;
- настройки сайта выбирают конкретный ключ из реестра и используют его для формирования CSS (body/menu/title).
Правила работы: базовые ассеты не править в /simai; добавления и overrides — через simai.data/config и simai.data/template/style|js
Для стабильных обновлений правило простое:
-
не править ядро ассетов в
/simai(и вообще системную часть); -
проектные изменения оформлять в одном из двух слоёв:
- через конфигурацию (
{site_dir}/simai.data/config/.asset.config.php) — когда нужно управлять наборами пакетов/версий/порядком; - через файлы шаблона (
{site_dir}/simai.data/template/styleи{site_dir}/simai.data/template/js) — когда нужно добавить/переопределить стили и скрипты проекта.
- через конфигурацию (
С учётом вашего правила «замещение, а не дополнение» практический подход обычно такой:
- берётся рабочая базовая конфигурация пакетов,
- переносится в
simai.data/config/.asset.config.php, - дальше правится только проектная часть (добавления, версии, отключения), но база остаётся самодостаточной.
Где смотреть примеры
Для разработки и отладки обычно достаточно трёх опорных точек:
- системный список пакетов и версий:
/simai/config/.asset.config.php - вызовы подключения пакетов: в шаблонах и компонентах через
\SIMAI\Main\Page\Asset::getInstance()->load(...) - реестр шрифтов и выбор шрифтов в настройках:
{site_dir}/simai.data/config/.font.config.php+ параметры сайта видаbody_font,title_font,menu_font