该 {% 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 }},城市:{{ city }}。</p>可以使用 body 属性将标记传递给分区。
{% partial "card" body %}
这是卡片内容
{% endpartial %}内容随后可作为 body 变量使用。
{{ body|raw }}当与 {% placeholder %} Twig 标签 结合使用时,可组合分区成为可能。以下分区定义了一个 header 和一个 body 部分,可以在其中添加 HTML 内容。
<div class="header">
{% placeholder header %}
</div>
<div class="body">
{{ body|raw }}
</div>接下来,您可以在 body 中包含 {% put %} 标签,以将分区结果与两个 HTML 内容部分进行组合。
{% partial "card" body %}
{% put header %}
<h2>这是卡片标题</h2>
{% endput %}
<p>这是卡片内容</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>未找到卡片!</p>
{% endif %}