模板在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
属性会更简单。**
另一个好处是,作者可以在页面属性的Advanced选项卡中更新cq:allowedTemplates
属性。 无法使用(标准)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
属于与if相同的应 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创建的页面的父/子页面。
有关完整信息,请参阅内容片段模板。