amteich / kirby-twig
Twig templating support for Kirby CMS
Installs: 22 479
Dependents: 0
Suggesters: 0
Security: 0
Stars: 49
Watchers: 4
Forks: 9
Open Issues: 1
Type:kirby-plugin
pkg:composer/amteich/kirby-twig
Requires
- getkirby/composer-installer: ^1.1
- twig/twig: ^3.4
README
Twig Plugin for Kirby CMS
- Adds support for Twig templates to Kirby CMS (3.0+).
- PHP templates still work, you don’t have to rewrite them if you don’t want to.
What it looks like
Before:
<?php /* site/templates/hello.php */ ?> <h1><?= $page->title() ?></h1> <ul> <?php foreach ($page->children() as $child): ?> <li><a href="<?= $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="{{ child.url }}">{{ child.title }}</li> {% endfor %} </ul>
Installation
Download
Download and copy this repository to /site/plugins/kirby-twig.
Git submodule
git submodule add https://github.com/amteich/kirby-twig.git site/plugins/kirby-twig
Composer
composer require amteich/kirby-twig
Usage
Page templates
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.
Hint: Accessing pagemethods instead of public variables
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() }}.
Options
You can find a full list of options in the options documentation.
More documentation
- Twig templating guide for Kirby
- Available options
- Using your own functions in templates
- Rendering a template in PHP: the
twighelper - Displaying Twig errors
License
Credits
- Maintainer: Christian Zehetner
- Twig library: Fabien Potencier and contributors / License
- Twig plugin for Kirby 2: Florens Verschelde
