fvsch / kirby-twig
为 Kirby CMS 提供的 Twig 模板支持
v3.0.3
2018-09-14 18:13 UTC
Requires
- php: >=5.4.0
- twig/twig: ^1.30
This package is not auto-updated.
Last update: 2024-09-14 19:20:11 UTC
README
- 为 Kirby CMS 2.x 添加对 Twig 模板 的支持。
- 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>
之后
{# site/templates/hello.twig #} <h1>{{ page.title }}</h1> <ul> {% for child in page.children %} <li><a href="{{ child.url }}">{{ child.title }}</li> {% endfor %} </ul>
安装
标准安装
- 下载 最新版本。
- 解压,将
kirby-twig-main文件夹重命名为twig,并将其放入项目中的site/plugins文件夹。
您应该得到以下文件夹结构
site
└─ plugins
└─ twig
├─ lib
├─ src
└─ twig.php
使用 Composer
在您的 Composer 依赖中要求 fvsch/kirby-twig
composer require fvsch/kirby-twig:^3.0
然后,确保您的 Kirby 安装在前端和面板上都自动加载 Composer 依赖项。为此,最安全的方法是创建您自己的自定义插件。
site
└─ plugins
└─ composer
└─ composer.php
<?php // site/plugins/composer/composer.php // Composer autoload require_once kirby()->roots()->index() . '/vendor/autoload.php';
最后,通过将以下行添加到您新创建的 site/plugins/composer/composer.php,注册插件,**在**已加载自动加载程序之后。
// Register the Twig plugin's template component Kirby\Twig\Plugin::register();
用法
页面模板
现在插件已安装并启用,您可以在 site/templates 目录中编写 Twig 模板。例如,如果您的文章文本文件名为 post.txt,则可以有一个如下所示的 post.twig 模板
{% extends '@templates/layout.twig' %}
{% block content %}
<article>
<h1>{{ page.title }}</h1>
{{ page.text.kirbytext | raw }}
</article>
{% endblock %}
看 {% extends '@templates/layout.twig' %} 和 {% block content %} 部分?这是管理多个模板具有共同页面布局的强大方式,只需更改核心内容(和/或其他特定部分)。阅读 我们的 Twig 模板指南 以获取更多信息。
在 PHP 中渲染模板:使用 twig 辅助函数
此插件还启用了一个 twig PHP 函数,用于渲染模板文件和字符串,如下所示
<?php // Render a simple template from the site/snippets directory echo twig('@snippets/header.twig'); // Same, but passing some additionnal variables echo twig('@snippets/header.twig', ['sticky'=>false]); // Render a string echo twig('Hello {{ who }}', ['who'=>'World!']);
如果您使用 Twig 模板处理页面,您可能根本不需要 twig() 辅助函数。但它可以在使用 模块和模式插件 时很有用。
更多文档
推荐阅读
其他主题
