模板

模板在AEM的不同位置使用:

详细介绍了以下模板:

模板 — 页面

AEM现在提供两种用于创建页面的基本模板类型:

注意

使用模板创建新页面🔗时,没有明显差异(对页面作者),也没有显示正在使用的模板类型。

可编辑的模板

可编辑的模板现在被视为使用AEM进行开发的最佳实践。

可编辑模板的优势:

  • 可以是作者创建的🔗编辑的

  • 引入此模板后,您可以为使用该模板创建的任何页面定义以下内容:

    • 结构
    • 初始内容
    • 内容策略
  • 创建新页面后,页面与模板之间会保持动态连接;这意味着对模板结构所做的更改将反映在使用该模板创建的任何页面上(不会反映对初始内容所做的更改)。

  • 使用内容策略(从模板编辑器中编辑)来保留设计属性(在页面编辑器中不使用设计模式)。

  • 存储在/conf

  • 有关更多信息,请参阅可编辑的模板

注意

有关AEM社区文章,请参阅如何使用可编辑模板开发Experience Manager网站,请参阅使用可编辑模板创建Adobe Experience Manager 6.5网站

静态模板

静态模板:

  • 必须由您的开发人员定义和配置。
  • 这是AEM的原始模板系统,已推出多个版本。
  • 静态模板是节点的层次结构,其结构与要创建的页面相同,但没有任何实际内容。
  • 复制以创建新页面,此后不存在动态连接。
  • 使用设计模式保留设计属性。
  • 存储在/apps
  • 有关更多信息,请参阅静态模板
注意

自AEM 6.5起,使用静态模板不被视为最佳实践。 请改用可编辑的模板。

AEM Modernizationtools可以帮助您从静态模板迁移到可编辑的模板。

模板可用性

注意

AEM提供了多个属性来控制​Sites​下允许的模板。 但是,将它们组合在一起可能会导致非常复杂的规则,从而难以跟踪和管理。

因此,Adobe建议您首先通过定义以下内容来简单操作:

  • cq:allowedTemplates属性

  • 仅在站点根目录上

有关示例,请参阅We.Retail:/content/we-retail/jcr:content

属性allowedPathsallowedParentsallowedChildren也可以放在模板上,以定义更复杂的规则。 但是,如果可能,如果需要进一步限制允许的模板,则在站点的子区域上进一步定义cq:allowedTemplates属性会更简单。**

另一个好处是,作者可以在​页面属性​的​Advanced​选项卡中更新cq:allowedTemplates属性。 无法使用(标准)UI更新其他模板属性,因此需要开发人员为每次更改维护规则和代码部署。

在站点管理界面中创建新页面时,可用模板的列表取决于新页面的位置以及在每个模板中指定的放置限制。

以下属性确定是否允许将模板T用于要作为页面P的子项放置的新页面。 以下每个属性都是一个包含零个或多个正则表达式的多值字符串,用于与路径匹配:

  • Pjcr:content子节点或P的上级的cq:allowedTemplates属性。

  • TallowedPaths属性。

  • TallowedParents属性。

  • 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

下图描述了模板评估流程:

chlimage_1-176

子页面中使用的限制模板

要限制可用于在给定页面下创建子页面的模板,请使用页面jcr:content节点的cq:allowedTemplates属性指定允许作为子页面的模板列表。 列表中的每个值都必须是允许的子页面(例如/apps/geometrixx/templates/contentpage)的模板的绝对路径。

可以使用模板jcr:content节点上的cq:allowedTemplates属性将此配置应用于使用此模板的所有新创建页面。

如果要添加更多约束(例如与模板层次结构有关的约束),可以使用模板上的allowedParents/allowedChildren属性。 然后,您可以明确指定从模板T创建的页面必须是从模板T创建的页面的父/子页面。

模板 — 内容片段

有关完整信息,请参阅内容片段模板

在此页面上