局部视图是强大的元素,可以在不同页面或布局中重复使用 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 %} 标签中局部模板名称后指定变量来向局部模板传递变量。
<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 %}可以通过在局部视图标签上添加 body 属性,将标记传递给局部视图。
{% 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 功能。请参阅 动态页面部分 的文档了解详情。
在局部文件(partials)的PHP部分可以定义一些特殊函数: onStart 和 onEnd. onStart 函数在局部文件被渲染之前, 以及在局部组件执行之前运行. 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 Partial Twig 标签文章 以了解有关
{% ajaxPartial %}标签的更多信息。
:::
当在 AJAX 分部中调用处理程序时,生命周期与常规 AJAX 处理程序的运行方式不同。
onEnd 函数之后运行。