Профили сайтов
Обзор
- Scope
- Конфигурация публичного представления, специфичная для сайта
Ключевые понятия
- Default Site
- Запись Site с is_default; отображаемый хост берётся из APP_URL, а не из поля domain.
- Additional Site
- Недефолтный Site, у которого поле domain содержит хосты, разделённые переводами строк.
- Profile Overlay
- Опциональный JSON, переопределяющий выбранные значения базового профиля без замены PHP-объявления.
- Menu Definition
- Объявленное в PHP меню (ключ и возможности); профиль поставляет пункты меню.
Структура
- Site Record
- Tablesites
- Fields
- key
- name
- domain
- is_default
- is_deletable
- profile_path
- layout_driver
- Profile Layers
- BasePHP-реализация SiteLayoutDriver
- OverlayJSON профиля CMS-сайта из Site.profile_path
- ResolvedRuntime-объект SiteProfileManager
- Menu And Slots
- Menu Builderapp/Services/Cms/Site/Menu/MenuBuilder.php
- Slot Resolverapp/Services/Cms/Site/Slots/SiteSlotResolver.php
Факты
- Миграция sites хранит индексированный флаг is_default и is_deletable; Site::default выбирает дефолтную запись. authoritative
- Site::additionalDomainHosts приводит к нижнему регистру, обрезает пробелы, удаляет дубликаты и разбивает domain по переводам строк; Site::domainHosts возвращает их только для недефолтных сайтов. authoritative
- Путь профиля по умолчанию — <site key>/profile.json в cms.sites.profiles_path, если profile_path равен null. authoritative
- Непустой overlay shell или theme заменяет базовое значение; settings и slots мержатся по ключу; меню мержатся через MenuOverlayHelper по объявленным ключам меню. authoritative
- Отсутствующий или пустой overlay оставляет PHP layout profile как базу резолвингового профиля. authoritative
- SiteServiceProvider регистрирует slot handlers: CMS-page, route, Blade, redirect и view. authoritative
Инструкции
Change Site Appearance
- резолвить зарегистрированный layout driver сайта и базовый профиль
- менять только поддерживаемые overlay settings, slots, menu data, shell или theme
- прочитать результирующий профиль через SiteProfileManager
- очистить применимые кэши профиля/сайта и проверить публичный вывод
Add Site Specific Page Visibility
- оставить page_sites пустым, если страница видна на всех резолвинговых сайтах
- создавать связи page_sites только когда видимость нужно ограничить выбранными сайтами
- фильтровать публичный сайт через Page::visibleOnSite
Правила
Architectural rule
Не помещайте объявления меню или схему внешнего вида нового layout'а только в JSON; объявляйте их через SiteLayoutDriver.