页面模板 — 静态 page-templates-static

CAUTION
AEM 6.4已结束扩展支持,本文档将不再更新。 有关更多详细信息,请参阅 技术支助期. 查找支持的版本 此处.

模板用于创建页面并定义可在所选范围内使用的组件。 模板是节点的层次结构,其结构与要创建的页面相同,但没有任何实际内容。

每个模板都将为您提供一系列可供使用的组件。

  • 模板由 组件;
  • 组件使用和允许访问小组件,这些组件用于呈现内容。
NOTE
可编辑的模板 也提供了,为获得最大灵活性和最新功能,推荐使用此类模板。

模板的属性和子节点 properties-and-child-nodes-of-a-template

模板是cq:Template类型的节点,具有以下属性和子节点:

名称
类型
描述
.
cq:Template
当前模板。 模板的节点类型为cq:Template。
allowedChildren
字符串[]
允许作为此模板子项的模板的路径。
allowedParents
字符串[]
允许作为此模板父项的模板的路径。
allowedPaths
字符串[]
允许基于此模板的页面路径。
jcr:created
日期
模板的创建日期。
jcr:description
字符串
模板的描述。
jcr:title
字符串
模板的标题。
排名
长整型
模板的排名。 用于在用户界面中显示模板。
jcr:content
cq:PageContent
包含模板内容的节点。
thumbnail.png
nt:file
模板的缩略图。
icon.png
nt:file
模板的图标。

模板是页面的基础。

要创建页面,必须复制模板(节点树) /apps/<myapp>/template/<mytemplate>)到站点树中的相应位置:如果使用 网站 选项卡。

此复制操作还会为页面提供其初始内容(通常仅限顶级内容)和属性sling:resourceType,用于呈现页面的页面组件的路径(子节点jcr:content中的所有内容)。

模板的结构方式 how-templates-are-structured

需要考虑两个方面:

  • 模板本身的结构
  • 使用模板时生成的内容的结构

模板的结构 the-structure-of-a-template

在类型的节点下创建模板 cq:模板.

screen_shot_2012-02-13at63646pm

可以设置各种属性,特别是:

  • jcr:title — 模板的标题;创建页面时,会显示在对话框中。
  • jcr:description — 模板描述;创建页面时,会显示在对话框中。

该节点包含一个jcr:content(cq:PageContent)节点,该节点用作生成页面内容节点的基础;这会使用sling:resourceType引用,该组件用于呈现新页面的实际内容。

screen_shot_2012-02-13at64010pm

此组件用于在创建新页面时定义内容的结构和设计。

screen_shot_2012-02-13at64137pm

模板生成的内容 the-content-produced-by-a-template

模板用于创建类型的页面 cq:Page (如前所述,页面是一种特殊类型的组件)。 每个AEM页面都有一个结构化的节点 jcr:content. 此功能:

  • 是cq:PageContent类型
  • 是包含已定义内容定义的结构化节点类型
  • 拥有资产 sling:resourceType 引用包含用于呈现内容的sling脚本的组件

默认模板 default-templates

AEM附带许多开箱即用的默认模板。 在某些情况下,您可能希望按原样使用模板。 在这种情况下,您需要确保模板可用于您的网站。

例如,AEM附带多个模板,包括内容页面和主页。

标题
Component
位置
用途
主页
homepage
geometrixx
Geometrixx主页模板。
内容页
contentpage
geometrixx
Geometrixx内容页面模板。

显示默认模板 displaying-default-templates

要查看存储库中所有模板的列表,请按如下步骤继续操作:

  1. 在CRXDE Lite中,打开 工具 菜单,单击 查询.

  2. 在查询选项卡中

  3. 作为 类型,选择 XPath.

  4. 在​ 查询 ​输入字段中,输入以下字符串:

    //element(*, cq:Template)

  5. 单击 执行. 列表显示在结果框中。

在大多数情况下,您会采用现有模板并开发一个新模板供您自己使用。 请参阅 开发页面模板 以了解更多信息。

要为您的网站启用现有模板,并希望将其显示在 创建页面 对话框 网站网站 控制台中,将模板节点的allowedPaths属性设置为: /content(/)。*)?

如何应用模板设计 how-template-designs-are-applied

在UI中使用 设计模式,则设计将保留在定义样式的内容节点的确切路径中。

CAUTION
Adobe建议仅通过 设计模式.
例如,在CRX DE中修改设计不是最佳做法,此类设计的应用可能会因预期行为而异。

如果仅使用设计模式应用设计,则以下部分将 设计路径解析, 决策树示例 不适用。

NOTE
本节介绍自AEM 6.4.2.0起的设计路径解析行为。

设计路径解析 design-path-resolution

在基于静态模板呈现内容时,AEM将尝试根据内容层次结构的遍历将最相关的设计和样式应用于内容。

AEM按以下顺序确定内容节点的最相关样式:

  • 如果存在内容节点完整而精确的路径设计(如在设计模式中定义设计时),则使用该设计。
  • 如果父项的内容节点有设计,则使用该设计。
  • 如果内容节点路径上的任何节点都有设计,则使用该设计。

在最后两种情况下,如果存在多个适用的设计,则使用距离内容节点最近的设计。

决策树 decision-tree

这是 设计路径解析 逻辑。

design_path_resolution

示例 example

请考虑如下简单的内容结构,其中设计可以应用于任何节点:

/root/branch/leaf

下表描述了AEM如何选择设计。

查找设计
设计适用于
所选设计
注释
leaf

root

branch

leaf

leaf
始终进行最精确的匹配。
leaf

root

branch

branch
回退到树中最接近的匹配项。
leaf
root
root
如果其他所有方法都失败了,就拿剩下的。
branch
branch
branch
branch

branch

leaf

branch
branch

root

branch

branch
branch

root

leaf

root

如果没有完全匹配,请取树中的下一个。

假设这将始终适用,但树的上端可能过于具体。

开发页面模板 developing-page-templates

AEM页面模板只是用于创建新页面的模型。 它们可以根据需要包含少量或多量的初始内容,其角色是创建正确的初始节点结构,并将所需的属性(主要是sling:resourceType)设置为允许编辑和渲染。

创建新模板(基于现有模板) creating-a-new-template-based-on-an-existing-template

不用说,新模板可以完全从头开始创建,但通常会复制并更新现有模板,以节省您的时间和精力。 例如,可以使用Geometrixx中的模板来帮助您入门。

要基于现有模板创建新模板,请执行以下操作:

  1. 将现有模板(最好使用尽可能接近您要实现的目标的定义)复制到新节点。

    模板通常存储在 /apps/<website-name>/templates/<template-name>.

    note note
    NOTE
    可用模板的列表取决于新页面的位置以及在每个模板中指定的放置限制。 请参阅 模板可用性.
  2. 更改 jcr:title 来反映其新角色的新模板节点。 您还可以更新 jcr:description (如果适用)。 请务必根据需要更改页面的模板可用性。

    note note
    NOTE
    如果希望模板显示在 创建页面 对话框 网站网站 控制台中,设置 allowedPaths 模板节点的属性: /content(/.*)?

    chlimage_1-251

  3. 复制模板所基于的组件(由 sling:resourceType 属性 jcr:content 节点)以创建新实例。

    组件通常存储在 /apps/<website-name>/components/<component-name>.

  4. 更新 jcr:titlejcr:description 新组件中的“隐藏主体”。

  5. 如果希望在模板选择列表中显示新的缩略图图片(大小为128 x 98像素),请替换thumbnail.png。

  6. 更新 sling:resourceType 模板的 jcr:content 引用新组件的节点。

  7. 对模板和/或其基础组件的功能或设计进行任何进一步的更改。

    note note
    NOTE
    /apps/<website>/templates/<template-name> 节点将影响模板实例(如在选择列表中所示)。
    /apps/<website>/components/<component-name> 节点将影响使用模板时创建的内容页面。

    您现在可以使用新模板在网站中创建页面。

NOTE
编辑器客户端库假定存在 cq.shared 命名空间,如果不存在JavaScript错误,则使用 Uncaught TypeError: Cannot read property 'shared' of undefined 结果。
所有示例内容页面都包含 cq.shared,因此基于这些内容的任何内容都会自动包含 cq.shared. 但是,如果您决定从头开始创建自己的内容页面,而不基于示例内容,则必须确保包含 cq.shared 命名空间。
请参阅 使用客户端库 以了解更多信息。

使现有模板可用 making-an-existing-template-available

此示例说明了如何允许将模板用于某些内容路径。 创建新页面时页面作者可用的模板取决于 模板可用性.

  1. 在CRXDE Lite中,导航到要用于页面的模板,例如新闻稿模板。

  2. 更改 allowedPaths 用于物业及其他物业 模板可用性. 例如, allowedPaths: /content/geometrixx-outdoors/[^/]+(/.*)? 表示在 /content/geometrixx-outdoors.

    chlimage_1-252

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e