Detect or mark the changeable parts of one HTML page, expose stable typed sockets, fill one record at a time, and optionally register the template as a site collection.
Where: Flowgen -> Add -> Web & Apps -> Page Template
Before you start
- One HTML page connected to Page.
- Optional CSS connected to Styles.
- A connected Website only when the template should register a collection.
Key ideas
- A page becomes a schema: Accepted data-cms-field markers become stable tf_<fieldId>_in sockets. Text-like fields use text; image fields use image. The node fills the marked page and preserves its stylesheet.
- Detection is reviewed, not silently applied: Find the fields asks the model to propose content parts. Rename, remove, or accept each proposal before markers and sockets are written. Existing hand-authored data-cms-field marks are authoritative.
- One template makes many pages: The node fills one record per run. Pair it with Items/List iteration to create many pages from one design; do not duplicate a template node per row.
- The template can own a collection: When connected to Website, accepting fields registers or updates a deterministic collection for this node and its address pattern, such as /blog/:slug.
- Page Template card: HtmlTemplateNode uses the authored shared-card path. Detect, review, and fill typed data-cms-field inputs in a designed HTML page.
- Properties sidebar: Card-owned template-field controls; common properties shell
- Opened surfaces: Field proposal review; HTML preview
Steps
- Connect HTML to Page and, when present, CSS to Styles. Connect a Website bundle if this template belongs to a site.
- Set and validate the address pattern, for example /blog/:slug.
- Click Find the fields, review the proposed parts, rename unclear labels, remove unwanted rows, and accept.
- Connect individual typed field sockets or send one JSON object to All parts at once. A specific field wire wins over the same key in the JSON object.
- Run the node. Connect Filled page and the unchanged Styles output onward.
- For many pages, connect Items columns to the dynamic sockets inside a List iteration.
Inputs
- Page / html_in: one source page.
- Styles / css_in: one stylesheet.
- Website / doc_in: optional website bundle used for collection registration.
- All parts at once / fields_in: one JSON object keyed by field id or name.
- Dynamic tf_<fieldId>_in: typed sockets created from accepted fields.
Outputs
- Filled page / html_out: the marked page with supplied values.
- Styles / css_out: the connected stylesheet unchanged.
Field precedence and stability
- A specific dynamic socket wins over fields_in for the same part.
- Field ids derive from marker names and remain stable so wires survive label changes.
- A second detection merges with prior review choices rather than discarding renamed/removed proposals.
- Accepted fields update the template-owned collection instead of creating a duplicate collection.
Address ownership
- The pattern must include a valid :slug location.
- The literal portion becomes the collection base path.
- Changing a registered base path moves the content folder and is warned about.
- Routes must remain distinct; collisions are never silently accepted.
Page Template controls and presets
- Add path: Flowgen → Add → Website → Page Template.
- Card: HtmlTemplateNode.
- Properties: Card-owned template-field controls; common properties shell.
- Controls: Find the fields; Review/rename/remove/accept; Address pattern; Website; Page; Styles; Dynamic fields.
- Opened surfaces: Field proposal review; HTML preview.
Tips
- Give field names semantic meaning such as hero_title, author_photo, or article_body.
- Use individual sockets for important typed fields and fields_in for the long tail.
- Keep CSS connected even when only HTML fields change; css_out is deliberately a separate pass-through.
Limitations and important notes
- The node fills HTML; it does not by itself save a CMS entry.
- Repeater children do not become one socket per repeated occurrence.
- The field detector can be wrong, which is why acceptance is explicit.
- Changing the upstream page after acceptance may require detection/acceptance again.
Troubleshooting
No field sockets appear
Connect a page, run Find the fields, then accept reviewed proposals—or add valid data-cms-field marks to the source.
A value from fields_in was ignored
Check whether the same field has a specific tf_ wire; the specific wire intentionally wins.