Pages
A page is a CMS-defined container that resolves to a route (slug) and renders an ordered list of banners.
Props
Page id in the CMS.
Internal label used in the CMS UI.
Owner/creator identifier. Set automatically on create. Read-only afterwards.
Stored with a leading "/" and automatically prefixed with the locale (e.g. "/de/home"). Normalized to lowercase kebab-case per path segment.
Page classification. Defaults to Default. Product pages are hidden from non-superusers in CMS queries.
Language of the page. Defaults to de. Used for slug normalization and language handling.
Manual publish toggle.
Scheduling
Optional: publish automatically from this date/time.
Optional: unpublish automatically from this date/time.
Validation: publishDate must not be later than unpublishDate.
Layout and styling
Optional theme applied to the page wrapper.
Optional wrapper DOM id.
Optional wrapper class list.
Optional page-specific header.
Whether the header should render. Defaults to true.
Optional page-specific footer.
Whether the footer should render. Defaults to true.
Banners and ordering
Relationship to banner entities.
Ordered list of banner ids. Source of truth for rendering order.
Ordering behavior:
- If bannersOrder is explicitly set, the banners relationship is overwritten to match its order.
- If bannersOrder is untouched but banners changes:
- set replaces the full order
- disconnectAll clears the order
- disconnect removes ids from the order
- connect appends new ids to the end
SEO and redirects
Meta title. Optional. Supports Handlebars normalization/validation.
Meta description. Optional. Supports Handlebars normalization/validation.
Optional Open Graph image (og:image).
Optional internal redirect target. Cannot reference itself.
Optional external redirect URL (absolute http/https). Overrides redirectPage when set.
Redirect status code. Required when a redirect is active.
Advanced meta options JSON. Shallow-merged with defaults to ensure expected keys exist.
options shape:
- canonical: string
- noindex: boolean
- nofollow: boolean
- robotsProps:
- nosnippet: boolean
- notranslate: boolean
- noimageindex: boolean
- noarchive: boolean
- maxSnippet: number (integer, -1 = unlimited)
- maxImagePreview: 'none' | 'standard' | 'large'
- maxVideoPreview: number (integer, -1 = unlimited)
Language alternates
Pages representing the same content in other locales. Self-references are rejected.
Rendering pipeline
- Resolve the page by slug.
- Apply theme and layout options (header/footer visibility, wrapper css).
- Render banners in bannersOrder by switching on banner.typename.