Developer docs  /  Themes

Recipe: a custom template page

Create templates/storage-tips.fluid containing the standard section loop(copy it verbatim — this is the wrapper contract from README §2.2):

{% for Section in Sections %}
{% if Section.IsVisible %}
<div data-alyta-section="{{ Section.Id }}" data-alyta-type="{{ Section.Type }}"{% if Section.HideOnMobile %} class="alyta-hide-mobile"{% endif %}{% include 'section-style' %}>
{% include Section.Type %}
</div>
{% endif %}
{% endfor %}

The catch-all route rule (/{slug}templates/{slug}.fluid) makes thepage live at /t/storage-tips with no backend change.

The honest trade-off: custom template pages are not in the builder'spage picker, so their stored section list can't be edited visually today.Their sections come from whatever the page key already holds (nothing, for abrand-new key). Practical options, in order of preference:

  1. If the page is really "sections an admin arranges" — use Recipe 1 (CMS page) instead; identical rendering, full builder support.
  2. If the page is developer-owned — skip the section loop and write the markup directly in the template (optionally {% include %} sections with hardcoded settings via {% assign %} is NOT supported — sections read Section.Settings; prefer plain markup or snippets).
  3. If you need builder editing on a custom template page, that requires adding the page to the builder's EDITABLE_PAGES list in the admin frontend — a small platform change; ask for it.