Templating

Variables

By default, these variables are given to a CMS view:

  • _node: the current node (App\Core\Entity\Site\Node)
  • _page: the current page (App\Core\Entity\Site\Page\Page)
  • _menu: the menu of the current node (App\Core\Entity\Site\Menu)
  • _navigation: the current navigation (App\Core\Entity\Site\Navigation)
  • _domain: the current domain
  • _locale: the current locale
  • _store: an instance of App\Core\Site\SiteStore

Page

You can access a page's blocks this way:

{% set myBlock = _page.myBlock.value %}

{{ myBlock }}

Retrieve all menus

{% set menus = _navigation.menus %}

Retrieve a specific menu:

{% set menu = _navigation.menu('menu_code') %}

Display a menu

{% set menu = _navigation.menu('menu_code') %}

<ul>
    {% for item in menu.rootNode.children %}
        {% if item.isVisible %}
            {% set isActive = _store.isActiveNode(item, true) %}

            <li {% if isActive %}class="active"{% endif %}>
                {% if not item.disableUrl %}
                    {% set url = item.hasExternalUrl ? item.url : url(node.routeName, {_domain: domain}) %}
                    <a href="{{ url }}">{{ item.label }}</a>
                {% else %}
                    {{ item.label }}
                {% endif %}

                {% set children = node.allChildren %}

                <ul>
                    {% for child in children %}
                        ...
                    {% endfor %}
                </ul>
            </li>
        {% endif %}
    {% endfor %}
</ul>

URL and path

Murph has somes twig functions to manage URLs:

Generic functions

  • Same as twig url but catches all exceptions:
    {{ safe_url(routeName, options, relative) }}: same as twig url but catches all exceptions
  • Same as twig url but catches all exceptions:
    {{ safe_path(routeName, options, relative) }}

Node functions

  • Generates a URL using a node:
    {{ node_url(node, options, relative) }}
  • Generates a path using a node:
    {{ node_path(node, options, relative) }}
  • Generates a URL using a node and catches all exceptions:
    {{ safe_node_url(node, options, relative) }}
  • Generates a path using a node and catches all exceptions:
    {{ safe_node_path(node, options, relative) }}

Filters

When a content could contains tags (eg: '{{url://my_route}}), usemurph_url`. This the example below:

Code Output
{{ content }} A link to the <a href="{{url://contact}}">contact page</a>
{{ content|murph_url }} A link to the <a href="https://example.com/contact">contact page</a>

String builder

The string builder builds a string using a format and an object or an array.

Examples:

  • {{ 'Entity ID is {id}'|build_string(myEntity) }} will output: Entity ID is 42
  • {{ 'Hello, {user.displayName}!'|build_string(myEntity) }} will output Hello, John doe!

In case of an not accessible property, no exception will be thrown.