Docs

Страницы и блоки

uticms.pages · verified 2026-07-11

Обзор

Scope
pages, page_sections, page_translations, PageViewAssembler и режимы контент-редактора

Ключевые понятия

Full Slug
Уникальный URL-путь, сгенерированный из пути секции страницы и slug страницы.
Editor Mode
Режим контента страницы; PageViewAssembler имеет явные ветки blocks и rich.
Base Block
Блок в pages.data_json со стабильным id, type, zone и data payload.
Translation Block Override
Локализованные data, сопоставленные с базовым блоком по id и смерженные в data этого блока.

Структура

  • Tables
    • Page Sections
      • parent_id
      • name
      • slug
      • sort
      • is_active
    • Pages
      • section_id
      • slug
      • full_slug
      • status
      • published_at
      • editor_mode
      • layout_key
      • view_path
      • allowed_roles
      • data_json
      • derived_meta
    • Page Translations
      • page_id
      • locale
      • title
      • excerpt
      • data_json
      • content_overrides
      • seo
  • Services
    • Assemblyapp/Page/PageViewAssembler.php
    • Layoutsapp/Page/Layouts/
    • Blocksapp/Page/Blocks and app/Services/Cms/Engine/Blocks
    • Rich Editorapp/Services/Cms/Engine/EditorJs

Факты

  • page_sections поддерживает опциональную self-parent связь, уникальные sibling slug'и и индексацию parent/sort. authoritative
  • При сохранении Page пересчитывается full_slug; pages.full_slug уникален, также pages обеспечивает уникальность пар section_id/slug. authoritative
  • Страницы по умолчанию сохраняют draft status, timestamp публикации, SEO index/follow boolean'ы, allowed roles, глобальные data и derived metadata. authoritative
  • Page translations уникальны для page и locale и хранят title, excerpt, локализованные data, content overrides и SEO data. authoritative
  • Page::visibleOnSite оставляет страницы без site-связей видимыми везде и включает связанные страницы только для запрошенного Site. authoritative
  • BlockMerger нормализует базовые и локализованные block-документы, сопоставляет блоки по id и мержит только переведённые data в базовый блок. authoritative
  • PageViewAssembler резолвит зарегистрированный layout и его content view; режим blocks передаёт смерженные блоки, режим rich нормализует и рендерит Editor.js data. authoritative

Инструкции

Create Localized Block Page

  1. создать или выбрать section и page с layout_key и editor_mode
  2. сохранить базовые блоки со стабильными id в page data
  3. создать одну page translation на локаль с text/data overrides по id базового блока
  4. резолвить через PageViewAssembler и проверить выбранную локаль

Change Page Layout

  1. проверить, что целевой layout зарегистрирован и view для его mode существует
  2. смапить существующие page data на контракт целевого layout/block
  3. сохранить layout_key и отрендерить preview перед публикацией

Правила

Architectural rule

Сохраняйте стабильные id базовых блоков между локалями, потому что локализованные block data резолвятся по id.

Architectural rule

Ключ layout страницы должен резолвиться в зарегистрированный layout с view для его editor mode; иначе публичный рендеринг вернёт service-unavailable error.