{% partial %}

October CMS Documentation Docs

{% partial %}

The {% partial %} tag will parse a CMS partial and render the partial contents on the page. To display a partial called footer.htm, simply pass the name after the partial tag quoted as a string.

{% partial "footer" %}

A partial inside a subdirectory can be rendered in the same way.

{% partial "sidebar/menu" %}

Note: The Themes documentation has more details on subdirectory usage.

The partial name can also be a variable:

{% set tabName = "profile" %}
{% partial tabName %}

# Variables

You can pass variables to partials by specifying them after the partial name:

{% partial "blog-posts" posts=posts %}

You can also assign new variables for use in the partial:

{% partial "location" city="Vancouver" country="Canada" %}

Inside the partial, variables can be accessed like any other markup variable:

<p>Country: {{ country }}, city: {{ city }}.</p>

# Passing Markup as a Variable

It is possible to pass markup to a partial using the body attribute.

{% partial "card" body %}
    This is the card contents
{% endpartial %}

The contents are then available as the body variable.

{{ body|raw }}

# Setting Partial Contents to a Twig Variable

In any template you can set the partial contents to a variable with the partial() function. This lets you manipulate the output before display. Remember to use the |raw filter to prevent output escaping.

{% set cardPartial = partial('my-cards/card') %}

{{ cardPartial|raw }}

You may also pass variables to the partial as the second argument.

{% set cardPartial = partial('my-cards/card', { foo: 'bar' }) %}

# Checking a Partial Exists

The hasPartial() function can be used to check if a partial exists without rendering the contents, it will return true or false if the partial is found.

{% if hasPartial('my-cards/card') %}
    {% partial 'my-cards/card' %}
{% else %}
    <p>Card not found!</p>
{% endif %}