home chevron_right
Ассеты ядра и конфиги ассетов/шрифтов

Базовые ассетыlink

В SF4 «ассеты» — это не просто набор подключаемых файлов, а пакеты (бандлы) CSS/JS/HTML-вставок, которые подключаются централизованно и повторно используются шаблоном и компонентами.

Ключевая идея такая:

  • физически ассеты лежат в каталоге /simai/asset (внутри него — подпапки пакетов и версий);

  • подключение в рантайме делает загрузчик ассетов (на стороне PHP), который:

    • выбирает пакет по имени,
    • выбирает версию (явно или «по умолчанию»),
    • добавляет в Bitrix AssetManager нужные CSS/JS/строки.

На практике базовый фронтенд SF4 собирается вокруг пакета simai.framework (ядро интерфейсных стилей/скриптов) + библиотек вроде jQuery/Bootstrap/плагинов (в зависимости от решения и включённых компонентов).

Конфиги ассетовlink

В 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(...),
  • для scriptaddJs(...),
  • для stringaddString(...).

Дополнительно учтён режим минификации 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');

Конфиг шрифтовlink

Шрифты в 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|jslink

Для стабильных обновлений правило простое:

  • не править ядро ассетов в /simai (и вообще системную часть);

  • проектные изменения оформлять в одном из двух слоёв:

    1. через конфигурацию ({site_dir}/simai.data/config/.asset.config.php) — когда нужно управлять наборами пакетов/версий/порядком;
    2. через файлы шаблона ({site_dir}/simai.data/template/style и {site_dir}/simai.data/template/js) — когда нужно добавить/переопределить стили и скрипты проекта.

С учётом вашего правила «замещение, а не дополнение» практический подход обычно такой:

  • берётся рабочая базовая конфигурация пакетов,
  • переносится в simai.data/config/.asset.config.php,
  • дальше правится только проектная часть (добавления, версии, отключения), но база остаётся самодостаточной.

Где смотреть примерыlink

Для разработки и отладки обычно достаточно трёх опорных точек:

  • системный список пакетов и версий: /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