Built-in partials and helpers
What the engine actually ships, the helper filters, versus the partial files you write yourself by convention in your site repo.
_contents, _localeUrl, _header, and _footer are project conventions you write in your own site repo, not engine built-ins. Quilium does not inject or auto-resolve them.Engine helpers
The engine ships exactly these helpers. In Liquid you call them as filters, not as functions; the function forms in the render payload are inert (see Variables and context). Each is documented with its signature in Liquid filters.
| Helper | Filter form | Role |
|---|---|---|
_ (alias t) |
'msgid' | _ |
i18n translate. |
url |
'route' | url: param: item |
Resolve a named route, locale-aware. |
redirect |
url | redirect: code |
Set Location + status. |
responseCode |
code | responseCode |
Set the response status. |
setCookie |
key | setCookie: value, {opts} |
Emit Set-Cookie. |
That is the entire shipped surface. The engine does not provide a _contents block dispatcher, a _header, a card partial, or any other template. Those are yours to write.
Project-convention partials (you write these)
The partials below are common conventions, files you create in your own site repo, not anything Quilium ships. The names come from the fil-rouge reference site; nothing forces them. They are included by name with include (not render), so they share the caller's scope and also receive the params you pass.
| Convention file | Typical params | What it does (when you write it) |
|---|---|---|
_contents.liquid |
section: page.contents['main'] |
Block dispatcher: loops a section, resolves each block's content.template, and {% include %}s it. |
_localeUrl.liquid |
path: '/newsletter' |
Prepends /{{locale.slug}} to a leading-slash path. Not for already-locale-aware URLs. |
_localeAltUrl.liquid |
loc: loc |
This page's URL in another locale; sanitises serialised route params. |
_header.liquid, _footer.liquid |
various | Site chrome. |
_articleCard.liquid, _articleMeta.liquid, _errMsg.liquid, _langSwitcher.liquid, _rubLabel.liquid, _mediaTextBody.liquid |
various | Reusable fragments. |
A typical block dispatcher you might write, making the elements/ prefix idempotent:
{%- for content in section -%}
{%- if content.template != blank -%}
{%- assign _file = content.template | replace: 'elements/', '' | prepend: 'elements/' -%}
{% include _file %}
{%- endif -%}
{%- endfor -%}
Called as:
{% include '_contents', section: page.contents['main'] %}
include shares scope, so variables leak. A variable set inside a partial stays visible to later includes on the same page. Pass every per-call input explicitly on every include (e.g. always pass variant: '' or variant: 'dark'); never rely on a prior include having set it.include/layout. Resolved against the CLI renderer (quilium-cli/src/liquid.js): it registers only filters and tags and renders the requested view file; no partial is auto-injected. Re-confirm against the production frontend rendering source before publishing.Last updated September 6, 2026.