Публичные ресурсы оболочки v200.4.1
Теги {devcraft*}, siteAssets, страницы Admin, синк в БД и компрессия.
Введение
Оболочка публичного сайта получает CSS/JS/meta через теги в main.tpl. Состав хранится в таблицах Admin и собирается из siteAssets манифестов + ручных записей.
Теги в теме
| Тег | Содержимое |
|---|---|
{devcraft} | CSS + meta + JS |
{devcraft-header} | CSS + meta |
{devcraft-scripts} | только JS |
Если одновременно стоят {devcraft} и split-теги — побеждает {devcraft}, split остаются пустыми.
Патч: engine/modules/main.php после $tpl->load_template('main.tpl') → PublicAssetTagService.
siteAssets в манифесте
В siteAssets кладите только глобальные файлы оболочки. Page-local (админский UI, виджет на одной странице) — в assets() или inject контроллера.
use DevCraft\Builders\ModuleSiteAssetsBuilder;
->siteAssets(
ModuleSiteAssetsBuilder::create()
->js('connections.js') // modules/{M}/Public/
->css('connections.css')
// или путь от корня сайта:
// ->js('devcraft/src/templates/core/assets/js/dc_public.js')
)Контракт: ModuleSiteAssets, builder: ModuleSiteAssetsBuilder.
Синк в БД
При первом заходе на публичную страницу с тегами:
- PublicAssetSeedService —
dc_public.js - PublicAssetManifestSyncService — все манифесты с непустым
siteAssets
Таблицы: dc_public_assets, dc_public_headers.
Страницы Admin
- Публичные стили — PublicStylesPage
- Публичные скрипты — PublicScriptsPage
- Публичные заголовки — PublicHeadersPage
UI как у Connections: Metro-таблица (поиск), колонка с ручкой DnD (mif-move), переключатель «Активен». Добавление — модалка (Добавить → форма → сохранить → строка в таблице). Логика — admin.js (DevCraftAdmin.PublicAssets).
Формы добавления — PublicAssetAdminFormService (FormSchema + Metro field_row).
Автозаписи (origin=auto) нельзя удалить — только выключить. DnD задаёт порядок и флаг public_assets_list_manually_ordered_{css|js|meta}.
Компрессия
Настройка Admin «Публичные ресурсы» → public_assets_compress. Бандл: PublicAssetBundleCacheService + PublicAssetMinify.
Что не класть в siteAssets
- Admin panel JS (
admin.js,dleapi.js,db_manager.js, …) - Page-local тема (
templates/{skin}/devcraft/...) connections_admin.js/ виджеты одной страницы