範本會用於AEM中的各個時間點:
當建立頁面時,需要選擇模板;這將用作新頁面的基礎。 該模板定義了生成的頁的結構、任何初始內容以及可使用的元件(設計屬性)。
當建立內容片段時,您還需要選取範本。 此範本會定義結構、初始元素和變異。
以下範本將詳細說明:
AEM現在提供兩種建立頁面的基本範本類型:
使用範本建立新頁面時,沒有顯示差異(對頁面作者而言),也沒有顯示使用的範本類型。
使用AEM開發時,可編輯的範本現在被視為最佳作法。
可編輯範本的優點:
已導入,可讓您為使用範本建立的任何頁面定義下列項目:
建立新頁面後,頁面與範本之間會維持動態連線;這表示使用該範本建立的任何頁面上都會反映對範本結構的變更(不會反映初始內容的變更)。
使用內容原則(從範本編輯器編輯)來保留設計屬性(不在頁面編輯器內使用設計模式)。
儲存在/conf
下
如需詳細資訊,請參閱可編輯的範本 。
AEM社群文章可供說明如何使用可編輯的範本開發Experience Manager網站,請參閱使用可編輯的範本建立Adobe Experience Manager 6.4網站。
靜態範本:
/apps
下自AEM 6.4起,使用靜態範本不被視為最佳實務。 請改用可編輯的範本。
AEM Modernizationtools可協助您從靜態範本移轉至可編輯的範本。
AEM提供多個屬性,以控制Sites下允許的範本。 但是,結合這些規則可能會產生非常複雜的規則,且難以追蹤和管理。
因此,Adobe建議您透過定義:
僅cq:allowedTemplates
屬性
僅位於站點根
如需範例,請參閱We.Retail:/content/we-retail/jcr:content
屬性allowedPaths
、allowedParents
和allowedChildren
也可放置在範本上,以定義更複雜的規則。 不過,如果需要進一步限制允許的範本,在網站的子區段上進一步定義cq:allowedTemplates
屬性會更簡單。**
另一個好處是,cq:allowedTemplates
屬性可由作者在Page Properties的Advanced標籤中更新。 無法使用(標準)UI更新其他範本屬性,因此需要開發人員來維護每次變更的規則和程式碼部署。
在網站管理員介面中建立新頁面時,可用範本清單會根據新頁面的位置,以及每個範本中指定的位置限制而定。
以下屬性確定是否允許將模板T
用於將新頁面作為頁面P
的子頁面。 這些屬性中的每個都是多值字串,包含零個或多個用於與路徑比對的規則運算式:
P
的jcr:content
子節點或P
的祖先的cq:allowedTemplates
屬性。
T
的allowedPaths
屬性。
T
的allowedParents
屬性。
P
範本的allowedChildren
屬性。
評價工作如下:
從P
開始的頁面階層遞增時找到的第一個非空白cq:allowedTemplates
屬性與T
的路徑相符。 如果沒有任何值相符,則拒絕T
。
如果T
具有非空allowedPaths
屬性,但沒有任何值與P
路徑匹配,則拒絕T
。
如果上述兩個屬性為空或不存在,則拒絕T
,除非它屬於與P
相同的應用程式。 T
屬於同一應用程 P
式,只有當路徑的第二級名稱與路 T
徑的第二級名稱相同時才 P
會。例如,範本/apps/geometrixx/templates/foo
與頁面/content/geometrixx
屬於相同的應用程式。
如果T
具有非空allowedParents
屬性,但沒有任何值與P
路徑匹配,則拒絕T
。
如果P
的模板具有非空allowedChildren
屬性,但沒有任何值與T
的路徑匹配,則T
將被拒絕。
在所有其他情況下,允許T
。
下圖描述了模板評估流程:
要限制哪些模板可用於在指定頁面下建立子頁面,請使用頁面jcr:content
節點的cq:allowedTemplates
屬性指定允許作為子頁面的模板清單。 清單中的每個值必須是允許的子頁面(例如/apps/geometrixx/templates/contentpage
)的模板的絕對路徑。
您可以使用範本jcr:content
節點上的cq:allowedTemplates
屬性,將此設定套用至使用此範本的所有新建立頁面。
如果要添加更多約束(例如關於模板層次結構),可以在模板上使用allowedParents/allowedChildren
屬性。 然後,您可以明確指定從範本T建立的頁面必須是從範本T建立的頁面的父/子頁面。
如需完整資訊,請參閱內容片段範本 。