Docs

Профили сайтов

uticms.sites.profiles · verified 2026-07-11

Обзор

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

  1. резолвить зарегистрированный layout driver сайта и базовый профиль
  2. менять только поддерживаемые overlay settings, slots, menu data, shell или theme
  3. прочитать результирующий профиль через SiteProfileManager
  4. очистить применимые кэши профиля/сайта и проверить публичный вывод

Add Site Specific Page Visibility

  1. оставить page_sites пустым, если страница видна на всех резолвинговых сайтах
  2. создавать связи page_sites только когда видимость нужно ограничить выбранными сайтами
  3. фильтровать публичный сайт через Page::visibleOnSite

Правила

Architectural rule

Не помещайте объявления меню или схему внешнего вида нового layout'а только в JSON; объявляйте их через SiteLayoutDriver.