Before:
<?php /* site/templates/hello.php */ ?>
<h1><?= $page->title() ?></h1>
<ul>
<?php foreach ($page->children() as $child): ?>
<li><a href="https://github.com/amteich/kirby-twig/blob/master/<?= $child->url() ?>"><?= $child->title() ?></li>
<?php endforeach; ?>
</ul>
After:
{# site/templates/hello.twig #}
<h1>{{ page.title }}</h1>
<ul>
{% for child in page.children() %}
<li><a href="https://github.com/amteich/kirby-twig/blob/master/{{ child.url }}">{{ child.title }}</li>
{% endfor %}
</ul>
Download and copy this repository to /site/plugins/kirby-twig
.
git submodule add https://github.com/amteich/kirby-twig.git site/plugins/kirby-twig
composer require amteich/kirby-twig
Now that the plugin is installed and active, you can write Twig templates in the site/templates
directory. For example, if the text file for your articles is named post.txt
, you could have a post.twig
template like this:
{% extends 'layout.twig' %}
{% block content %}
<article>
<h1>{{ page.title }}</h1>
{{ page.text.kirbytext | raw }}
</article>
{% endblock %}
See the {% extends '@templates/layout.twig' %}
and {% block content %}
parts? They’re a powerful way to manage having a common page layout for many templates, and only changing the core content (and/or other specific parts). Read our Twig templating guide for more information.
Twig calls to specific methods, like for instance page.children
sometimes return NULL
. This can occur, if there is also a public variable which is only initialized after calling the corresponding method.
{{ page.children }}
returns NULL
, because the public variable is returned. Please call the method instead like this: {{ page.children() }}
.
You can find a full list of options in the options documentation.
twig
helper