模板用於建立頁面,並定義哪些元件可在選定範圍內使用。 範本是節點的階層,其結構與要建立的頁面相同,但沒有任何實際內容。
每個範本都會提供一系列可供使用的元件。
也提 供可編輯的範本,且為最具彈性和最新功能的建議範本類型。
範本是cq:Template類型的節點,具有以下屬性和子節點:
名稱 |
類型 |
說明 |
. |
cq:Template | 目前的範本。 範本的節點類型為cq:Template。 |
allowedChildren | String[] | 允許作為此模板子項的模板的路徑。 |
allowedParents | 字串[] | 允許作為此模板父項的模板的路徑。 |
allowedPaths | 字串[] | 允許基於此模板的頁的路徑。 |
jcr:created | 日期 | 建立模板的日期。 |
jcr:description | 字串 | 模板的說明。 |
jcr:title | 字串 | 模板的標題。 |
排名 | 長整數 | 範本的排名。 用於在用戶介面中顯示模板。 |
jcr:content | cq:PageContent | 包含模板內容的節點。 |
thumbnail.png | nt:file | 模板的縮略圖。 |
icon.png | nt:file | 模板的表徵圖。 |
範本是頁面的基礎。
要建立頁面,必須將模板(節點樹/apps/<myapp>/template/<mytemplate>
)複製到站點樹中的相應位置:如果使用Websites標籤建立頁面,就會發生此情況。
此複製動作也會提供頁面的初始內容(通常僅限頂層內容)和屬性sling:resourceType,用於轉譯頁面的頁面元件路徑(子節點jcr:content中的所有內容)。
需要考慮兩個方面:
在cq:Template類型的節點下建立模板。
可以設定各種屬性,特別是:
此節點包含jcr:content(cq:PageContent)節點,可作為產生頁面之內容節點的基礎;這會參考,使用sling:resourceType,用於轉譯新頁面實際內容的元件。
建立新頁面時,此元件用於定義內容的結構和設計。
範本可用來建立cq:Page
類型的頁面(如前所述,頁面是特殊類型的元件)。 每個AEM頁面都有一個結構化節點jcr:content
。 此特性:
sling:resourceType
屬性,可參考保有用於轉譯內容的sling指令碼的元件AEM隨附許多可立即使用的預設範本。 在某些情況下,您可能會想要依原樣使用範本。 在此情況下,您必須確保範本可供您的網站使用。
例如,AEM隨附數個範本,包括內容頁面和首頁。
標題 | 元件 | 位置 | 用途 |
---|---|---|---|
首頁 | homepage | geometrixx | Geometrixx首頁模板。 |
內容頁面 | contentpage | geometrixx | Geometrixx內容頁面範本。 |
要查看儲存庫中所有模板的清單,請按如下步驟操作:
在CRXDE Lite中,開啟工具菜單,然後按一下查詢。
在查詢索引標籤中
作為類型,選擇XPath。
在Query輸入欄位中,輸入以下字串:
//element(*, cq:Template)
按一下執行。 清單顯示在結果框中。
在大多數情況下,您會取用現有範本,並開發新範本供您自用。 如需詳細資訊,請參閱開發頁面範本 。
若要為您的網站啟用現有範本,並希望在從網站控制台的網站下建立頁面時,該範本顯示在建立頁面對話方塊中,請將範本節點的allowedPaths屬性設定為:/content(/)。*)?
使用設計模式在UI中定義樣式時,設計會保存在要為其定義樣式的內容節點的確切路徑上。
Adobe建議僅透過設計模式套用設計。
例如,在CRX DE中修改設計並非最佳作法,且此類設計的應用可能會與預期行為不同。
如果設計僅使用設計模式應用,則以下部分設計路徑解析度、決策樹和示例不適用。
本節說明自AEM 6.4.2.0起的設計路徑解析行為。
根據靜態範本轉譯內容時,AEM會嘗試根據內容階層的周遊情形,將最相關的設計和樣式套用至內容。
AEM會依下列順序決定內容節點最相關的樣式:
在最後兩種情況中,如果有多個適用的設計,請使用最接近內容節點的設計。
這是設計路徑解析邏輯的圖形表示。
請考慮如下的簡單內容結構,其中設計可應用於任何節點:
/root/branch/leaf
下表說明AEM將如何選擇設計。
尋找設計 |
設計適用於 |
已選擇設計 |
評論 |
leaf
|
|
leaf |
始終進行最準確的匹配。 |
leaf |
|
branch |
回復到樹下最接近的匹配。 |
leaf |
root |
root |
如果其他所有失敗,則取剩餘的。 |
branch |
branch |
branch |
|
branch |
|
branch |
|
branch |
|
branch |
|
branch |
|
root |
如果沒有完全匹配,請取樹中的下一個。 假設這將始終適用,但更上一層樹可能過於具體。 |
AEM頁面範本只是用來建立新頁面的模型。 它們可視需要包含盡量少或多的初始內容,其角色為建立正確的初始節點結構,並將必要屬性(主要是sling:resourceType)設為允許編輯和轉譯。
不用說,您可以從頭開始完全建立新範本,但經常會複製並更新現有範本,以節省時間和精力。 例如,您可以使用Geometrixx中的範本來開始使用。
要根據現有模板建立新模板:
將現有範本(最好以盡可能接近您想要達到的定義)複製到新節點。
範本通常儲存在/apps/<website-name>/templates/<template-name>中。
可用的範本清單取決於新頁面的位置,以及每個範本中指定的位置限制。 請參閱範本可用性。
變更新範本節點的jcr:title以反映其新角色。 您也可以視需要更新jcr:description。 請務必視需要變更頁面的範本可用性。
如果希望在從網站控制台在網站下建立頁面時,模板顯示在建立頁面對話框中,請將模板節點的allowedPaths
屬性設定為:/content(/.*)?
複製範本所依據的元件(由範本內jcr:content節點的sling:resourceType屬性指示)以建立新例項。
元件通常儲存在/apps/<website-name>/components/<component-name>中。
更新新元件的jcr:title和jcr:description。
如果您想要在範本選取清單中顯示新的縮圖圖片,請取代thumbnail.png(大小為128 x 98 px)。
更新範本jcr:content節點的sling:resourceType以參考新元件。
對範本和/或其基礎元件的功能或設計進行任何進一步變更。
對**/apps/<website>/templates/<template-name>節點所做的更改將影響模板實例(如選擇清單中)。
對/apps/<website>/components/<component-name>**節點所做的變更,將影響使用範本時建立的內容頁面。
您現在可以使用新範本在網站中建立頁面。
編輯器用戶端程式庫會假設內容頁面中存在cq.shared
命名空間,如果命名空間不存在,則會導致JavaScript錯誤Uncaught TypeError: Cannot read property 'shared' of undefined
。
所有範例內容頁面皆包含cq.shared
,因此任何以這些頁面為基礎的內容都會自動包含cq.shared
。 不過,如果您決定從草稿開始建立自己的內容頁面,而不以範例內容為基礎,則必須確定包含cq.shared
命名空間。
如需詳細資訊,請參閱使用用戶端程式庫。
此範例說明如何允許將範本用於特定內容路徑。 建立新頁面時頁面作者可用的範本,由Template Availability中定義的邏輯決定。
在CRXDE Lite中,導覽至您要用於頁面的範本,例如電子報範本。
更改用於模板可用性的allowedPaths
屬性和其他屬性。 例如, allowedPaths
:/content/geometrixx-outdoors/[^/]+(/.*)?
表示可在/content/geometrixx-outdoors
下的任何路徑中使用此範本。