---
title: Built-in partials and helpers
description: What the engine actually ships, the helper filters, versus the partial files you write yourself by convention in your site repo.
updated: 2026-06-22
prev: liquid-filters
---

<div class="q-callout q-callout-warn"><i class="fa-solid fa-triangle-exclamation lead"></i>
  <div><b>There is no Quilium-shipped partial library.</b> The engine ships only function-form helpers, which in Liquid you use as <a href="/en/docs/liquid-filters">filters</a>. Files such as <code>_contents</code>, <code>_localeUrl</code>, <code>_header</code>, and <code>_footer</code> are <b>project conventions you write in your own site repo</b>, not engine built-ins. Quilium does not inject or auto-resolve them.</div>
</div>

## 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](/en/docs/template-variables)). Each is documented with its signature in [Liquid filters](/en/docs/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`](/en/docs/templating-philosophy) (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:

```liquid
{%- for content in section -%}
  {%- if content.template != blank -%}
    {%- assign _file = content.template | replace: 'elements/', '' | prepend: 'elements/' -%}
    {% include _file %}
  {%- endif -%}
{%- endfor -%}
```

Called as:

```liquid
{% include '_contents', section: page.contents['main'] %}
```

<div class="q-callout q-callout-warn"><i class="fa-solid fa-triangle-exclamation lead"></i>
  <div><b><code>include</code> shares scope, so variables leak.</b> 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 <code>variant: ''</code> or <code>variant: 'dark'</code>); never rely on a prior include having set it.</div>
</div>

<div class="q-ph"><i class="fa-regular fa-folder-open"></i><span><b>Placeholder:</b> confirm whether the engine ever auto-injects a template (e.g. a default layout or error view) without an explicit <code>include</code>/<code>layout</code>. Resolved against the CLI renderer (<code>quilium-cli/src/liquid.js</code>): 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.</span></div>
