🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 部件 ## **介绍** Partials包含可重复使用的Twig标记块,可以在整个网站的任何地方使用。部件对于在不同页面或布局上重复的页面元素非常有用。一个很好的部件示例是页脚,用于不同的[页面布局](https://www.kancloud.cn/followme/octobercms/1073832#3)。此外,[使用AJAX更新页面内容](https://www.kancloud.cn/followme/octobercms/1073832#3)需要部件内容。 部件模板文件驻留在主题目录的\*\*/ partials**子目录中。部分文件应具有**htm\*\*扩展名。最简单的部件示例: ``` <p>This is a partial</p> ``` 的[配置](https://www.kancloud.cn/followme/octobercms/1073832#3)部分是可选的部件并且可以包含可选的**描述**,其被显示在后端用户接口的参数。下一个示例显示了部件描述: ``` description = "Demo partial" == <p>This is a partial</p> ``` 部件配置部分还可以包含组件定义。[组件](https://www.kancloud.cn/followme/octobercms/1073832#3)在另一篇文章中解释。 ## **渲染部件** 该`{% partial "partial-name" %}`Twig标签生成的部分。标签有一个必需参数 - 没有扩展名的部分文件名。请记住,如果从[子目录中](https://www.kancloud.cn/followme/octobercms/1073832#3)引用partial,则应指定子目录名称。该`{% partial %}`标签可以在里面的网页时,布局或另一局部使用。引用部分的页面示例: ``` <div class="sidebar"> {% partial "sidebar-contacts" %} </div> ``` ## **将变量传递给部件** 您会发现通常需要将变量传递给外部代码的部分变量。这使得局部更有用。例如,您可以使用部分呈现博客帖子列表。如果您可以将帖子集合传递给部分,则可以在博客存档页面,博客类别页面等上使用相同的部分。您可以通过在`{% partial %}`标记中的部分名称后指定变量来将变量传递给部件: ``` <div class="sidebar"> {% partial "blog-posts" posts=posts %} </div> ``` 您还可以分配新变量以在partial中使用: ``` <div class="sidebar"> {% partial "sidebar-contacts" city="Vancouver" country="Canada" %} </div> ``` 在部件内部,可以像任何其他标记变量一样访问变量: ``` <p>Country: {{ country }}, city: {{ city }}.</p> ``` ## **动态部件** 部分(如页面)可以使用任何Twig功能。有关详细信息,请参阅[动态页面](https://www.kancloud.cn/followme/octobercms/1073832#3)文档。 ### **部件执行生命周期** 可以在partials的PHP部分中定义特殊函数:`onStart`和`onEnd`。该`onStart`函数在呈现部分之前和执行部分[组件](https://www.kancloud.cn/followme/octobercms/1073832#3)之前执行。该`onEnd`函数在呈现部分之前和执行部分[组件](https://www.kancloud.cn/followme/octobercms/1073832#3)之后执行。在onStart和onEnd函数中,您可以将变量注入Twig环境。使用`array notation`将变量传递给页面: ``` == function onStart() { $this['hello'] = "Hello world!"; } == <h3>{{ hello }}</h3> ``` [标记指南中](https://www.kancloud.cn/followme/octobercms/1073832#3)描述了October提供的模板语言。[动态布局](https://www.kancloud.cn/followme/octobercms/1073832#3)文章中描述了处理程序执行的整体顺序。 ### **生命周期限制** 由于它们是在后期实例化的,因此在呈现页面的过程中,某些限制适用于部分的生命周期。它们不遵循标准执行过程,如[布局执行生命周期中所述](https://www.kancloud.cn/followme/octobercms/1073832#3)。应注意以下限制: 1. AJAX事件未注册,将无法正常运行。 2. 生命周期函数不能返回任何值。 3. 在呈现部分时将发生常规POST表单处理。 通常,partials中的组件使用是为基本组件设计的,这些组件在没有太多处理的情况下呈现简单标记,例如*Like*或*Tweet*按钮。