介紹
布局定義頁(yè)面支架,即頁(yè)面上重復(fù)的所有內(nèi)容,例如頁(yè)眉和頁(yè)腳。布局通常包含HTML標(biāo)記以及HEAD,TITLE和BODY標(biāo)記。
布局模板位于主題目錄的/ layouts子目錄中。布局模板文件應(yīng)具有htm擴(kuò)展名。在布局文件中,您應(yīng)該使用{% page %}標(biāo)簽來(lái)輸出頁(yè)面內(nèi)容。最簡(jiǎn)單的布局示例:
<html>
<body>
{% page %}
</body>
</html>
要為頁(yè)面使用布局,頁(yè)面應(yīng)在“ 配置”部分中引用布局文件名(不帶擴(kuò)展名)。請(qǐng)記住,如果從子目錄引用布局,則應(yīng)指定子目錄名稱。使用default.htm布局的示例頁(yè)面模板:
url = "/"
layout = "default"
==
<p>Hello, world!</p>
當(dāng)請(qǐng)求此頁(yè)面時(shí),其內(nèi)容將與布局合并,或更確切地說(shuō),將布局的{% page %}標(biāo)記替換為頁(yè)面內(nèi)容。前面的示例將生成以下標(biāo)記:
<html>
<body>
<p>Hello, world!</p>
</body>
</html>
請(qǐng)注意,您可以在布局中渲染局部。這使您可以在不同布局之間共享公共標(biāo)記元素。例如,您可以有一個(gè)輸出網(wǎng)站CSS和JavaScript鏈接的局部文件。這種方法簡(jiǎn)化了資源管理-如果要添加JavaScript引用,則應(yīng)修改單個(gè)部分,而不是編輯所有布局。
“ 配置”部分對(duì)于布局是可選的。支持的配置參數(shù)是name和description。這些參數(shù)是可選的,并在后端用戶界面中使用。具有說(shuō)明的示例布局模板:
description = "Basic layout example"
==
<html>
<body>
{% page %}
</body>
</html>
占位符
占位符允許頁(yè)面將內(nèi)容注入到布局中。占位符在布局模板中使用{% placeholder %}標(biāo)簽定義。在下一個(gè)例子中示出了具有占位符的布局模板頭部在HTML HEAD部分中定義。
<html>
<head>
{% placeholder head %}
</head>
...
頁(yè)面可以使用{% put %}和{% endput %}標(biāo)記將內(nèi)容注入占位符。以下示例演示了一個(gè)簡(jiǎn)單的頁(yè)面模板,該模板將CSS鏈接注入到上一個(gè)示例中定義的占位符頭。
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>
有關(guān)占位符的更多信息,請(qǐng)參見(jiàn)《標(biāo)記指南》。
動(dòng)態(tài)布局
布局(如頁(yè)面)可以使用任何Twig功能。有關(guān)詳細(xì)信息,請(qǐng)參閱動(dòng)態(tài)頁(yè)面文檔。
布局執(zhí)行生命周期
內(nèi)部布局的PHP部分可以定義下列功能用于處理頁(yè)面執(zhí)行生命周期:onInit,onStart,onBeforePageStart和onEnd。
在onInit初始化所有組件時(shí)以及處理AJAX請(qǐng)求之前,將執(zhí)行該函數(shù)。該onStart功能在頁(yè)面處理開(kāi)始時(shí)執(zhí)行。該onBeforePageStart功能在布局組件運(yùn)行之后但在頁(yè)面onStart功能執(zhí)行之前執(zhí)行。onEnd呈現(xiàn)頁(yè)面后執(zhí)行該功能。處理程序的執(zhí)行順序如下:
- 布局
onInit()功能。 - 頁(yè)面
onInit()功能。 - 布局
onStart()功能。 - 布局組件
onRun()方法。 - 布局
onBeforePageStart()功能。 - 頁(yè)面
onStart()功能。 - 頁(yè)面組件
onRun()方法。 - 頁(yè)面
onEnd()功能。 - 布局
onEnd()功能。