cms_assets е централен регистър на CSS/JS ресурси.
Всеки asset се описва на едно ниво (default), напълно съвместимо със сегашния едномерен формат, и по избор може да съдържа вложен масив versions за алтернативни версии.
Root (default) дефиницията винаги е fallback и може да съдържа допълнителна логика (напр. js_after, noConflict, shims).
Пример:
'bootstrap' => array(
// default (min supported)
'css_file' => 'https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css',
'js_file' => 'https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js',
// optional versions
'versions' => array(
5 => array(
'css_file' => 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css',
'js_file' => 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js'
)
)
),
cms_assetsadd_asset($key, $version = null)
Регистрира логически asset по ключ. Ако е подадена версия, тя override-ва default; ако не — използва root дефиницията.
normalize_asset() / вътрешен resolver
Обединява root дефиницията с избраната версия (ако има), така че към рендера винаги да стига един финален, плосък asset.
render_assets('css' | 'js')
Рендерира всички регистрирани assets, без дублиране, в съответната секция (head за CSS, footer за JS).
Кои assets се използват се дефинира декларативно в PHP, извън HTML-а:
глобално — в /functions.php (CMS level, общи зависимости);
за всички теми — в /Templates/functions.php (default поведение);
за конкретна тема — в /Templates/themeX/functions.php (override при нужда).
Темите не включват файлове директно, а само заявяват логически зависимости чрез add_asset().
В HTML темплейтите няма директни <link> и <script> за CMS библиотеки.
Assets се рендерират централизирано чрез pipeline-а:
CSS ресурсите в <head> началото (обикновено в meta_tags.php):
$o_page->render_assets('css');
footer_inc.php):Така всички CSS и JS ресурси се подреждат, дедублицират и управляват централно, без промени по отделните теми.