wearejust / kirby-twig
Twig templating support for Kirby CMS
Installs: 19 591
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 0
Forks: 12
Open Issues: 3
Type:kirby-plugin
Requires
- getkirby/composer-installer: ^1.1
- twig/twig: ^3.4
This package is auto-updated.
Last update: 2024-10-27 14:11:15 UTC
README
- Adds support for Twig templates to Kirby CMS (3.0+ and 4.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/wearejust/kirby-twig.git site/plugins/kirby-twig
Composer
composer require wearejust/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
twig
helper - Displaying Twig errors
License
Credits
- Maintainer: JUST
- (previous) Maintainer: Christian Zehetner
- Twig library: Fabien Potencier and contributors / License
- Twig plugin for Kirby 2: Florens Verschelde