Docs

Sites & Page CMS

uticms.sites · verified 2026-07-11

Overview

Scope
Feature-gated public CMS, site resolution, layouts, profiles, pages, blocks, and slots

Key concepts

Site Profile
Runtime profile assembled from a PHP SiteLayoutDriver and an optional JSON overlay.
Layout Driver
A registered implementation defining a site key, default profile data, menu declarations, and appearance settings.
Slot
A named region resolved by a registered handler such as CMS page, route, Blade, redirect, or view.

Structure

  • Site Domain
    • Modelapp/Models/Site/Site.php
    • Storagesites tables from database/migrations/2026_06_22_130000_create_sites_tables.php
  • Rendering
    • Page Models
      • Page
      • PageTranslation
      • PageSection
    • Block Engineapp/Page and app/Services/Cms/Engine
    • Layout Engineapp/Services/Cms/Site/Layout
    • Profile Engineapp/Services/Cms/Site/Profile
  • Public Routesroutes/cms.php

Facts

  • SiteServiceProvider binds SiteResolverInterface to DefaultSiteResolver. authoritative
  • SiteProfileManager and JsonSiteProfileLoader provide profile data; SiteLayoutBootstrap registers layout contributors. authoritative
  • The registered slot handlers are CMS page, route, Blade, redirect, and view handlers. authoritative
  • CMS public routes conditionally provide mail-open tracking, locale switching, home, contact form submission, sitemap, and a page fallback. authoritative
  • The PageController fallback is registered only when public_routes and page_cms features are enabled. authoritative
  • The ordinary web home route is used only when the CMS is not configured to own the home route. authoritative
  • CmsEngineServiceProvider registers block rendering, block data mapping, editor repository, Editor.js rendering, placeholder resolution, and draft-preview authorization. authoritative

How-to guides

Add Layout Capability

  1. implement a SiteLayoutDriver or contributor
  2. register the contributor through the existing layout bootstrap path
  3. declare profile defaults, menus, appearance settings, and required views
  4. verify the resolved profile and target public feature flags

Rules

Architectural rule

Treat the PHP layout as the declaration/default layer and JSON as an optional override layer.

Architectural rule

Declare layout-provided menus and appearance settings through the SiteLayoutDriver contract instead of relying on undocumented JSON keys.