这个 {% partial %} 标签将解析一个 CMS 局部视图 并渲染该局部视图内容到页面上。要显示一个名为 footer.htm 的局部视图,只需在 partial 标签后以字符串形式传递其名称。
{% partial "footer" %}位于子目录中的局部视图也可以以相同的方式渲染。
{% partial "sidebar/menu" %}主题文档 提供了更多关于子目录用法的详细信息。
局部视图名称也可以是一个变量:
{% set tabName = "profile" %}
{% partial tabName %}您可以通过在局部视图名称后面指定变量来将它们传递给局部视图:
{% partial "blog-posts" posts=posts %}您也可以分配新变量供局部视图使用:
{% partial "location" city="Vancouver" country="Canada" %}在局部视图中,可以访问变量,如同访问任何其他标记变量一样:
<p>Country: {{ country }}, city: {{ city }}.</p>可以使用 body 属性将标记传递给局部视图。
{% partial "card" body %}
This is the card contents
{% endpartial %}内容随后即可作为 body 变量使用。
{{ body|raw }}可组合的局部视图通过结合 {% placeholder %} Twig 标签来实现。以下局部视图定义了一个 header 和一个 body 部分,可以在其中添加 HTML 内容。
<div class="header">
{% placeholder header %}
</div>
<div class="body">
{{ body|raw }}
</div>接下来,您可以将 {% put %} 标签包含在 body 中,以将局部视图结果与两个 HTML 内容部分组合。
{% partial "card" body %}
{% put header %}
<h2>This is the card header</h2>
{% endput %}
<p>This is the card contents</p>
{% endpartial %}在任何模板中,您都可以使用 partial() 函数将局部视图内容设置为变量。这使您可以在显示前操作输出。请记住使用 |raw 过滤器来防止输出转义。
{% set cardPartial = partial('my-cards/card') %}
{{ cardPartial|raw }}您也可以将变量作为第二个参数传递给局部视图。
{% set cardPartial = partial('my-cards/card', { foo: 'bar' }) %}hasPartial() 函数可用于检查局部视图是否存在而不渲染其内容,如果找到局部视图,它将返回 true 或 false。
{% if hasPartial('my-cards/card') %}
{% partial 'my-cards/card' %}
{% else %}
<p>Card not found!</p>
{% endif %}