Page blueprint

Page blueprints are located in /site/blueprints/pages and control the Panel setup and form fields for pages.

Blueprint location

  • /site/blueprints/pages

Default page blueprint

To create the same set of fields for all pages, you can setup a default.yml that is used whenever no custom page blueprint is configured.

  • /site/blueprints/pages/default.yml


The title is required and will appear in the list of selectable templates when a new page is created and multiple templates are available.

title: Article

Translated titles

The title can be translated by passing an array of translations with the matching language code as key:

    en: Article
    de: Artikel


Presets are typical standard setups for page, pages and files, see presets.

preset: page


The num option defines which numbering scheme to use when a page is published.

Alphabetical sorting by page uid

num: zero

Sorting by a custom sort number field

num: '{{ page.customSortNumberField }}'

The return value of the query has to be an integer which will be used for sorting. Learn more about Kirby's query language.

Chronological sorting by date field

By date

num: '{{ page.created.toDate("Ymd") }}'

By datetime

num: '{{ page.created.toDate("YmdHi") }}'


With the status option, you define the page status you want to allow for the page. You can also change their label and description. This option gives you a lot of flexibility how you want to use page status in your website.

Simple example

    draft: Draft
    listed: Published

Extended example

    label: Draft
    text: The article is still in draft mode. It can only be seen by editors with Panel access.
    label: In Review
    text: The article is online and can be visited with the direct URL. The team must still give the final go to publish it.
    label: Published
    text: The article is online and listed in the blog


The icon can either be one of our own icons or an emoji. Icons appear in page lists when no preview image is available.

icon: page


icon: 📚


With options, you can control all the page actions that should or should not be available for this particular page type. The option dropdown for pages will adjust accordingly.

Option Value
changeSlug true/false
changeStatus true/false
changeTemplate false or list of allowed template
changeTitle true/false
delete true/false
preview true/false/template string (see below)
read true/false
update true/false


You can change the link of the preview button or disable it entirely with the option setting.

Disabling the preview button

For some pages it makes sense to disable the preview entirely.

  preview: false

The preview option can also take any absolute link or a template string.

Absolute URL


Template string

You can use Kirby's powerful query syntax to create any link dynamically.

  preview: "{{ page.parent.url }}/#{{ page.slug }}"

Switching templates

You must define a list of compatible templates with the changeTemplate option to allow editors to switch between page templates.

    - video-post
    - link-post
    - text-post


You can find examples of different types of page blueprints in the samples section.