Build a Canvas page¶
Briefing, not authority. (R) rule at linked source · (O) dated upstream fact · (P) procedure · (C) open work · (G) not established.
WHAT THIS MEANS IN DRUPAL¶
A page is Canvas composition: components placed in order, bound to entity data. Canvas owns layout and section order, not the facts (R) site-building §3.
OWNER¶
- Composition, slots, content templates, global regions: Canvas (R) site-building §3.
- Facts (services, people, proof, metrics, SEO): entity fields bound into Canvas (R) site-building §3.
- Collections: Views (R) DRY §19, §46.
- Agent mutation:
canvas_tools(R) standard §7.5.
PREREQUISITES¶
- (P) The content entities exist; the components exist (else see Build a component).
DO THIS¶
- (P) Per-bundle display: Canvas content template. One-off page: Canvas page (R) DRY §55.
- (P) Bind props to entity fields; reference shared content, do not copy it (R) DRY §12, §52.
- (P) Lists via a configurable View block (R) DRY §47.
- (P) Agents write auto-save drafts; publish explicitly (R) standard §7.5.
- (P) Verify render, props, a11y, not just "page renders" (R) site-building §37.
WATCH FOR¶
- Page-specific narrative, order and CTA placement may live on the page; anything a second page would repeat may not (R) site-building §3.
- Per-user parts need cache contexts or lazy builders (R) standard §10 render rules.
DO NOT¶
page--*.html.twig, big preprocess, custom page-builder module, Controller-rendered marketing pages (R) site-building §3, standard §8.- Hardcode headline copy in components (R) site-building §4.
OWNERSHIP / CAN-SHOULD-MAY¶
- CAN: Canvas editor,
canvas_tools, Canvas CLI for pages. - SHOULD: site config owns pages; theme owns chrome.
- MAY: agent writes land in draft; publish explicitly unless required and governed (R) standard §7.5.
DO NOT REDISCOVER¶
- Canvas is the default when enabled; do not recreate it in Twig (R) site-building §3.
CONFLICTS¶
| ID | A | B | Resolution |
|---|---|---|---|
| C-CANVAS-VERSION | how-we-build §16: "current stable Canvas is 1.11.x" | Same section: do not hardcode versions | Treat 1.11.x as a dated observation; check drupal.org. |
GO DEEPER¶
Anchored sources: frontmatter authority_sources. Expires last_verified + 30d.