xiaowang/site/plugins/kirby-twig/README.md
2021-10-29 18:05:46 +02:00

102 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 dont have to rewrite them if you dont 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? Theyre 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