介绍
布局定义页面支架,即页面上重复的所有内容,例如页眉和页脚。布局通常包含HTML标记以及HEAD,TITLE和BODY标记。
布局模板位于主题目录的/ layouts子目录中。布局模板文件应具有htm扩展名。在布局文件中,您应该使用{% page %}标签来输出页面内容。最简单的布局示例:
<html>
<body>
{% page %}
</body>
</html>
要为页面使用布局,页面应在“ 配置”部分中引用布局文件名(不带扩展名)。请记住,如果从子目录引用布局,则应指定子目录名称。使用default.htm布局的示例页面模板:
url = "/"
layout = "default"
==
<p>Hello, world!</p>
当请求此页面时,其内容将与布局合并,或更确切地说,将布局的{% page %}标记替换为页面内容。前面的示例将生成以下标记:
<html>
<body>
<p>Hello, world!</p>
</body>
</html>
请注意,您可以在布局中渲染局部。这使您可以在不同布局之间共享公共标记元素。例如,您可以有一个输出网站CSS和JavaScript链接的局部文件。这种方法简化了资源管理-如果要添加JavaScript引用,则应修改单个部分,而不是编辑所有布局。
“ 配置”部分对于布局是可选的。支持的配置参数是name和description。这些参数是可选的,并在后端用户界面中使用。具有说明的示例布局模板:
description = "Basic layout example"
==
<html>
<body>
{% page %}
</body>
</html>
占位符
占位符允许页面将内容注入到布局中。占位符在布局模板中使用{% placeholder %}标签定义。在下一个例子中示出了具有占位符的布局模板头部在HTML HEAD部分中定义。
<html>
<head>
{% placeholder head %}
</head>
...
页面可以使用{% put %}和{% endput %}标记将内容注入占位符。以下示例演示了一个简单的页面模板,该模板将CSS链接注入到上一个示例中定义的占位符头。
url = "/my-page"
layout = "default"
==
{% put head %}
<link href="/themes/demo/assets/css/page.css" rel="stylesheet">
{% endput %}
<p>The page content goes here.</p>
有关占位符的更多信息,请参见《标记指南》。
动态布局
布局(如页面)可以使用任何Twig功能。有关详细信息,请参阅动态页面文档。
布局执行生命周期
内部布局的PHP部分可以定义下列功能用于处理页面执行生命周期:onInit,onStart,onBeforePageStart和onEnd。
在onInit初始化所有组件时以及处理AJAX请求之前,将执行该函数。该onStart功能在页面处理开始时执行。该onBeforePageStart功能在布局组件运行之后但在页面onStart功能执行之前执行。onEnd呈现页面后执行该功能。处理程序的执行顺序如下:
- 布局
onInit()功能。 - 页面
onInit()功能。 - 布局
onStart()功能。 - 布局组件
onRun()方法。 - 布局
onBeforePageStart()功能。 - 页面
onStart()功能。 - 页面组件
onRun()方法。 - 页面
onEnd()功能。 - 布局
onEnd()功能。