Layout
概述
Layout,此處稱為佈局。定義了一個頁面框架,即頁面上的所有的重複的內容,例如header部分和footer部分。Layout通常包含HTML標籤、HEAD標籤、TITLE標籤和BODY標籤。
位置:安裝的主題的目錄,layout子目錄中。
副檔名:htm
Layout中輸出內容應該使用page標籤進行頁面內容輸出。{% page %};最近簡單的方式:
<html>
<body>
{% page %}
</body>
</html>
Page與Layout關係,Page可以使用不同的Layout,Layout也可以通過Page來引用多個page頁面。但是,他們之間建立聯絡的是Page中的設定,然後Layout中的{% page %}才能正確的引用這個page,才可以通過Page的URL結合Layout佈局把頁面顯示出來。
要為一個Page使用Layout,Page的Configuration Section部分必須引用Layout檔名稱(不帶副檔名)。請記住,如果從子目錄引用Layout,則應指定子目錄名稱。使用default.htm的Layout的示例頁面模板:
url = "/"
layout = "default"
==
<p>Hello, world!</p>
當請求該頁面時,其內容與Layout合併,或者更確切地說 – Layout的{% page %}標籤被頁面內容替換。前面的示例會生成以下標記:
<html>
<body>
<p>Hello, world!</p>
</body>
</html>
請注意,您可以在Layout中渲染部件。這使您可以在不同的Layout之間共享常用元素。例如,您可以有一個輸出網站CSS和JavaScript連結的部件。這種方法簡化了資源的管理。 如果你想新增一個JavaScript引用,你應該修改一個小部件,而不是編輯所有的Layout。
佈局中的配置區域是可選的,支援name和description。
description = "Basic layout example"
==
<html>
<body>
{% page %}
</body>
</html>
Placeholders
Placeholders這裡稱為【佔位符】,可以允許頁面將內容注入到佈局中。佔位符在佈局模板中用{% placeholder %}標籤定義。下面的例子顯示了一個在HTML HEAD部分中定義了一個叫head的【佔位符】的Layout模板。
<html>
<head>
{% placeholder head %}
</head>
...
頁面可以使用{% put %}和{% endput %}標籤將內容注入【佔位符】。以下示例演示了一個簡單的頁面模板,它將CSS連結注入前一示例中定義的叫head佔位符。
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>
動態佈局
和Page一樣,Layout可以使用任何Twig特性。
佈局的執行生命週期
佈局中的PHP程式碼部分,可以定義頁面周期函式:
onInit當所有元件被初始化並且在處理AJAX請求之前,該函式被執行。
onStart功能在頁面處理開始時執行。
onBeforePageStart函式在Layout元件執行後執行,但在頁面的onStart函式執行之前執行。
onEnd函式在頁面呈現後執行。
處理程式執行的順序如下:
- Layout onInit() function.
- Page onInit() function.
- Layout onStart() function.
- Layout components onRun() method.
- Layout onBeforePageStart() function.
- Page onStart() function.
- Page components onRun() method.
- Page onEnd() function.
- Layout onEnd() function.