範本用於AEM的不同點:
當建立頁面時,您需要選擇範本;這將用作新頁面的基礎。 範本定義結果頁面的結構、任何初始內容以及可使用的元件(設計屬性)。
當建立內容片段時,您也需要選取範本。 此範本會定義結構、初始元素和變化。
以下範本將詳細說明:
AEM現在提供兩種基本範本類型,以建立頁面:
可編輯的範本現在被視為使用AEM進行開發的最佳實務。
可編輯範本的優點:
已引入此功能,可讓您為使用範本建立的任何頁面定義下列項目:
建立新頁面後,頁面與範本之間會維持動態連線;這表示對範本結構所做的變更將反映在該範本所建立的任何頁面上(不會反映對初始內容的變更)。
使用內容原則(從範本編輯器編輯)來保存設計屬性(不在頁面編輯器中使用設計模式)。
儲存在/conf
下
如需詳細資訊,請參閱可編輯範本。
靜態範本:
/apps
下自AEM 6.5起,使用靜態範本並不被視為最佳實務。 請改用可編輯的範本。
AEM Modernizationtools可協助您從靜態範本移轉至可編輯的範本。
AEM提供多個屬性,以控制Sites下允許的範本。 但是,結合這些規則可能會產生非常複雜的規則,而且難以追蹤和管理。
因此,Adobe建議您從定義:
僅cq:allowedTemplates
屬性
僅位於站點根目錄
如需範例,請參閱We.Retail:/content/we-retail/jcr:content
屬性allowedPaths
、allowedParents
和allowedChildren
也可以放在範本上,以定義更複雜的規則。 但是,如果需要進一步限制允許的範本,在網站子區段上進一步定義much屬性會更簡單。cq:allowedTemplates
另一個優點是,cq:allowedTemplates
屬性可由作者在頁面屬性的Advanced標籤中更新。 其他範本屬性無法使用(標準)UI進行更新,因此需要開發人員來維護規則和程式碼部署以進行每項變更。
在網站管理介面中建立新頁面時,可用範本的清單會視新頁面的位置以及每個範本中指定的位置限制而定。
以下屬性決定是否允許將範本T
用於新頁面,作為頁面P
的子頁面。 這些屬性中的每個屬性都是一個多值字串,其中包含0或多個規則運算式,用於與路徑進行比對:
P
的jcr:content
子節點的cq:allowedTemplates
屬性或P
的祖先。
T
的allowedPaths
屬性。
T
的allowedParents
屬性。
P
範本的allowedChildren
屬性。
評價工作如下:
當以P
開始的頁面階層遞增時,找到的第一個非空白的cq:allowedTemplates
屬性與T
的路徑相符。 如果沒有任何值匹配,則拒絕T
。
如果T
具有非空的allowedPaths
屬性,但沒有任何值與P
的路徑匹配,則拒絕T
。
如果上述兩個屬性皆為空或不存在,則會拒絕T
,除非它屬於與P
相同的應用程式。 T
僅當路徑的第二 P
級名稱與路徑的第二級名稱相同 T
時,才屬於與if相同的應用程式 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建立的頁面的父項/子項。
如需完整資訊,請參閱內容片段範本。