Types

Introduction

Page types are allow you to define custom fields and layout for pages of this type.

Fields

Below is a list of fields in the types stream. Fields are accessed as attributes:

$type->name;

Same goes for decorated instances in Twig:

{{ type.name }}
Fields
Key Type Description

name

text

The type name.

description

textarea

The type description.

slug

slug

The slug used for API and database table.

handler

addon

The page handler extension to use.

theme_layout

select

The default theme layout for pages of this type.

layout

editor

The layout of the custom page fields.

Theme Layouts

The type's theme layout will define the defualt theme layout to wrap the page's content.

Theme layouts generally specify the top level structural layout of your website. Perhaps a layout for your home page specifically, one for two column pages, and perhaps one custom HTML pages.

Accessing Active Pages

You can access the active page in theme layouts if needed by using the template super variable.

{{ template.page.title }}

A more realistic example might look like this:

{% if template.page.banner_image.id %}
    <div id="banner" style="background-image: url({{ template.page.banner_image.path }});">
        ...
    </div>
{% endif %}

Page Layouts

The type's page layout is wrapped by the theme layout.

The primary goal of the page layout is to display the page's custom field values.

Defining Page Layouts

When defining the page layout the page is available to access field values.

In the simple example below content is the field slug of the WYSIWYG field assigned to this page's type.

<h1>{{ page.title }}</1h>

{{ page.content.render|raw }}

A more powerful example using our Grid field type with the field slug content might look like this:

{% for section in page.content %}
    <div class="section {{ section.type }}-section-type">
        {% include "theme::sections/" ~ section.type %}
    </div>
{% endfor %}

The above example will let you define well designed and controlled content section that allow the user to easily build structured stacks of content.