分部视图是强大的元素,可以在不同页面或布局中重复使用 HTML,例如在不同页面布局中使用的页面页脚。分部视图也是一个强大的工具,用于动态地通过 AJAX 更新页面内容。
局部模板文件位于您的主题中的 partials 目录。局部文件应具有 htm 扩展名。接下来是一个最简单的局部示例。
<p>This is a partial</p>配置部分对于分部是可选的,并且可以包含可选的 description 参数,在后端用户界面中显示。此示例展示了一个定义了 description 的分部。
description = "Demo partial"<p>This is a partial</p>局部配置节也可以包含组件定义。组件一文 更详细地说明了组件。
请记住,如果您从子目录中引用局部模板,则应指定子目录的名称。
该 {% partial "partial-name" %} Twig 标签渲染一个局部视图。该标签有一个必需参数 - 局部视图文件名,不包含扩展名。该 {% partial %} 标签可以在页面、布局或另一个局部视图内部使用。以下是一个页面引用局部视图的示例。
<div class="sidebar">
{% partial "sidebar-contacts" %}
</div>你会发现,你经常需要从外部代码将变量传递给 partial。这使得 partial 更加有用。例如,你可以有一个渲染博客文章列表的 partial。如果你能将文章集合传递给 partial,同一个 partial 就可以用于博客归档页面、博客分类页面等等。你可以将变量传递给 partial,方法是在 {% partial %} 标签中 partial 名称之后指定这些变量。
<div class="sidebar">
{% partial "blog-posts" posts=posts %}
</div>你还可以为该局部提供新变量。
<div class="sidebar">
{% partial "sidebar-contacts" city="Vancouver" country="Canada" %}
</div>在局部模板中,可以像访问其他任何标记变量一样访问变量。
<p>Country: {{ country }}, city: {{ city }}.</p>部分内容将能访问当前上下文中的变量以及提供的额外变量。
{% partial "mypartial" foo="bar" %}在以下示例中,foo 变量将在 mypartial 分部模板内可用。
{% set foo = "bar" %}
{% partial "mypartial" %}您可以通过附加 only 关键字来禁用对上下文的访问。在此示例中,只有 foo 变量可访问。
{% partial "mypartial" foo="bar" only %}在下一个示例中,没有变量将可访问。
{% partial "mypartial" only %}可以通过给 partial 标签添加 body 属性,来向 partial 传递标记。
{% partial "card" body %}
This is the card contents
{% endpartial %}内容在局部模板中作为 body 变量可用。
{{ body|raw }}与 占位符标记标签,这让您能够构建可组合的部分。
{% partial "card" image="img.jpg" body %}
{% put header %}
<h2>This is the card header</h2>
{% endput %}
This is the card contents
{% endpartial %}该 卡片 局部视图由两个内容区域和一个图像变量组成。
<div class="header">
<div class="image">
<img src="{{ image }}" />
</div>
{% placeholder header %}
</div>
<div class="body">
{{ body|raw }}
</div>局部文件,像页面一样,可以使用任何 Twig 功能。请参阅文档的动态页面部分以获取详细信息。
在局部文件的 PHP 部分中可以定义一些特殊函数:onStart 和 onEnd。onStart 函数在局部文件渲染之前以及在 [局部文件组件](./components.md) 执行之前运行。onEnd 函数在局部文件渲染之前以及在局部文件组件执行之后运行。在 onStart 和 onEnd 函数中,您可以将变量注入到 Twig 环境中。使用 $this 结合数组表示法将变量传递给页面。
<?
function onStart()
{
$this['hello'] = "Hello world!";
}
?><h3>{{ hello }}</h3>外部赋给分部的变量可以在 PHP 中使用 $this 对象进行访问。
<?
function onStart()
{
$this['location'] = $this->city . ', ' . $this->country;
}
?><p>{{ location }} is the same as {{ city }}, {{ country }}.</p>October CMS 提供的模板语言在 标记指南 中有所描述。处理器执行的总体顺序在 动态布局部分 的文档中有所描述。
由于它们在页面渲染时才进行后期实例化,常规局部模板的生命周期会受到一些限制。为了克服这个问题,您可以使用 {% ajaxPartial %} 来允许在您的局部模板内部调用 AJAX 处理程序。
{% ajaxPartial "contact-form" %}参阅 AJAX 部分 Twig 标签文章 以了解有关
{% ajaxPartial %}标签的更多信息。
:::
在 AJAX 分部内部调用处理程序时,生命周期的运作方式与常规 AJAX 处理程序不同。
onEnd函数之后运行。