103 lines
2.7 KiB
Markdown
103 lines
2.7 KiB
Markdown
|
# Twig Plugin for Kirby CMS
|
|||
|
|
|||
|
<img src="doc/kirby-twig.png" width="200" alt="">
|
|||
|
|
|||
|
- Adds support for [Twig templates](http://twig.sensiolabs.org/) to [Kirby CMS](https://getkirby.com/) (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
|
|||
|
<?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:
|
|||
|
|
|||
|
```twig
|
|||
|
{# 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:
|
|||
|
|
|||
|
```twig
|
|||
|
{% 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](doc/guide.md) 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](doc/options.md).
|
|||
|
|
|||
|
****
|
|||
|
|
|||
|
## More documentation
|
|||
|
|
|||
|
- [Twig templating guide for Kirby](doc/guide.md)
|
|||
|
- [Available options](doc/options.md)
|
|||
|
- [Using your own functions in templates](doc/functions.md)
|
|||
|
- [Rendering a template in PHP: the `twig` helper](doc/twighelper.md)
|
|||
|
- [Displaying Twig errors](doc/errors.md)
|
|||
|
|
|||
|
## License
|
|||
|
|
|||
|
[MIT](LICENSE.md)
|
|||
|
|
|||
|
## Credits
|
|||
|
|
|||
|
- Maintainer: [Christian Zehetner](https://github.com/seehat)
|
|||
|
- Twig library: Fabien Potencier and contributors / [License](https://github.com/twigphp/Twig/blob/3.x/LICENSE)
|
|||
|
- Twig plugin for Kirby 2: Florens Verschelde
|