Demo Brand Demo Brand

Layouts

A page selects its wrapper with a {{layout}} / {{nolayout}} directive that may sit anywhere in the page body. Wrapping happens at Tier 1 (publish): the layout's {{content}} placeholder is replaced by the page HTML, then all tags resolve on the combined document. This page carries no directive, so it was wrapped in src/layouts/default.html — that layout is where the header above and the footer below come from.

SourceTier 1 · resolves at publish
{{layout}}                  ← shorthand for {{layout file="default"}}
{{layout file="bare"}}      ← wrap this page in src/layouts/bare.html
{{nolayout}}                ← opt out: serve the page as a complete HTML document

Directives are stripped from delivered HTML; if several appear, the first wins (with a warning). The source here is escaped on purpose — a live directive would re-route this very page, so nothing renders on the right.

Resolution rules

In the pageLayout used
no directivedefault if src/layouts/default.html exists, otherwise rendered unwrapped
{{layout}} or {{layout file="default"}}src/layouts/default.html
{{layout file="X"}}src/layouts/X.html — a missing file is a soft failure: unwrapped + a preview warning
{{nolayout}}none — the page is served as a complete HTML document

A layout must contain a {{content}} placeholder; one that doesn't is skipped (unwrapped + warning). pages.layout_name in the admin is a cached derivative of the directive — the source file is the truth.

Live layout demos

Each demo page states in its body which layout it expects to be wrapped in:

{{content}} outside a layout

SourceTier 1 · resolves at publish
{{content}}
Rendered

Valid only in layout files. In a page body it is an undefined tag: production renders it empty and silent; the preview surfaces the undefined-tag marker instead — which is exactly what the rendered pane should show here.