Pages

Pages are store in the path_pages config.
This file structure represents the pages available in the website.

The pages extensions are twig or html.

File Relative public url
@pages/{relative}.twig /{relative}
@pages/{relative}.html /{relative}
@pages/menu/images.twig /menu/images
@pages/menu/php.html /menu/php
@pages/index.twig /

Autoloaded context

If you have a yaml file of the same name of the page, then the context of the page is automatically loaded into the context of the page.

Example of this demo page @pages/menu/pages.twig:

{% extends "@templates/base.twig" %}

{% block content %}
    <h1>Pages</h1>

    <p>
        Pages are store in the <code>path_pages</code> config.<br>
        This file structure represents the pages available in the website.
    </p>

    <p>
        The pages extensions are <code>twig</code> or <code>html</code>.
    </p>

    <table class="fixed">
        <thead>
        <tr>
            <th>File</th>
            <th>Relative public url</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><code>@pages/{relative}.twig</code></td>
            <td><code>/{relative}</code></td>
        </tr>
        <tr>
            <td><code>@pages/{relative}.html</code></td>
            <td><code>/{relative}</code></td>
        </tr>
        <tr>
            <td><code>@pages/menu/images.twig</code></td>
            <td><code>/menu/images</code></td>
        </tr>
        <tr>
            <td><code>@pages/menu/php.html</code></td>
            <td><code>/menu/php</code></td>
        </tr>
        <tr>
            <td><code>@pages/index.twig</code></td>
            <td><code>/</code></td>
        </tr>
        </tbody>
    </table>

    <h2>Autoloaded context</h2>

    <p>
        If you have a <code>yaml</code> file of the same name of the page, then the context of the page
        is automatically loaded into the context of the page.
    </p>

    <p>Example of this demo page <code>@pages/menu/pages.twig</code>:</p>
    <pre style="overflow: auto;max-height: 15rem">{{ source('@pages/menu/pages.twig')|escape }}</pre>

    <p>With the associated data <code>@pages/menu/pages.yaml</code>:</p>
    <pre style="overflow: auto;max-height: 15rem">{{ source('@pages/menu/pages.yaml')|escape }}</pre>

    <table class="fixed">
        <thead>
        <tr>
            <th>variable</th>
            <th>example</th>
            <th>result</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><code>invoice_number</code></td>
            <td><code>{% verbatim %}{{ invoice_number }}{% endverbatim %}</code></td>
            <td><code>{{ invoice_number }}</code></td>
        </tr>
        <tr>
            <td><code>name</code></td>
            <td><code>{% verbatim %}{{ name }}{% endverbatim %}</code></td>
            <td><code>{{ name }}</code></td>
        </tr>
        <tr>
            <td><code>address.city</code></td>
            <td><code>{% verbatim %}{{ address.city }}{% endverbatim %}</code></td>
            <td><code>{{ address.city }}</code></td>
        </tr>
        <tr>
            <td><code>order_items</code></td>
            <td><code>{% verbatim %}{{ order_items|join(', ') }}{% endverbatim %}</code></td>
            <td><code>{{ order_items|join(', ') }}</code></td>
        </tr>
        </tbody>
    </table>

{% endblock %}

With the associated data @pages/menu/pages.yaml:

invoice_number: 314159
name: Santa Claus
address:
  street: Santa Claus Lane
  zip: 12345
  city: North Pole

order_items:
  - Sled
  - Wrapping Paper
variable example result
invoice_number {{ invoice_number }} 314159
name {{ name }} Santa Claus
address.city {{ address.city }} North Pole
order_items {{ order_items|join(', ') }} Sled, Wrapping Paper