创建页面时,您需要选择模板。 页面模板用作新页面的基础。 模板定义生成页面的结构、任何初始内容以及可以使用的组件(设计属性)。 这有几个优点:
template-authors
组。使用“页面模板”,构成页面的片段被隔离在组件中。 您可以在UI中配置必要的组件组合,从而无需为每个页面变体开发新的页面组件。
本文档:
本文档假设您已经熟悉创建和编辑模板。 请参阅创作文档 创建页面模板,其中详细说明了向模板作者公开的可编辑模板的功能。
WKND教程 通过实施示例深入了解如何使用页面模板,这对于了解如何在新项目中设置模板非常有用
创建页面模板主要是通过 模板控制台和模板编辑器 模板作者。 本节概述了此过程,并在后面介绍了技术级别发生的情况。
在创建新的可编辑模板时,您可以:
创建 模板文件夹. 这不是强制性的,但建议使用最佳实践。
现成提供了一系列模板类型。 您还可以 创建您自己的特定于站点的模板类型 如果需要。
配置新模板的结构、内容策略、初始内容和布局。
结构
有关模板作者如何定义结构的详细信息,请参阅 创建页面模板.
有关结构的技术详细信息,请参阅 结构 在本文档中。
策略
内容策略定义组件的设计属性。
这些选项适用于模板(以及使用模板创建的页面)。
有关模板作者如何定义策略的详细信息,请参阅 创建页面模板.
有关策略的技术详细信息,请参阅 内容策略 在本文档中。
初始内容
有关模板作者如何定义结构的详细信息,请参阅 创建页面模板.
有关初始内容的技术详细信息,请参阅 初始内容 在本文档中。
布局
有关模板作者如何定义模板布局的详细信息,请参阅 创建页面模板.
有关模板布局的技术详细信息,请参阅 版面 在本文档中。
启用模板,然后为特定内容树允许该模板。
有关模板作者如何启用模板的详细信息,请参阅 创建页面模板.
有关启用模板的技术详细信息,请参阅 为我们启用和允许模板e在此文档中
使用它创建内容页面。
有关页面作者如何使用模板创建页面的详细信息,请参阅 创建和组织页面.
有关使用可编辑模板创建页面的技术详细信息,请参阅 生成内容页面 在本文档中。
切勿在模板中输入任何需要国际化的信息。出于内部化目的, 核心组件的本地化功能 建议使用。
模板是简化页面创建工作流的强大工具。不过,太多的模板会让作者不知所措,并使页面创建变得混乱。一个好的经验法则是将模板的数量保持在 100 个以内。
由于潜在的性能影响,Adobe 建议不要使用超过 1000 个模板。
编辑器客户端库假定存在 cq.shared
名称空间,如果它不存在,则会出现JavaScript错误 Uncaught TypeError: Cannot read property 'shared' of undefined
都会有结果。
所有示例内容页面都包含 cq.shared
,因此任何基于它们的内容都会自动包含 cq.shared
. 但是,如果您决定从头开始创建自己的内容页面,而不基于示例内容,则必须确保包含 cq.shared
命名空间。
参见 使用客户端库 以进一步了解。
要组织模板,您可以使用以下文件夹:
global
即使您可以嵌套文件夹,当用户在 模板 控制台将它们显示为平面结构。
在标准AEM实例中, global
模板控制台中已存在文件夹。 此文件夹会保存默认模板,如果在当前文件夹中没有找到策略和/或模板类型,则此文件夹可以充当备用。您可以将默认模板添加到此文件夹或创建新文件夹(推荐)。
最佳实践是创建一个新文件夹来存放自定义模板,而不是使用 global
文件夹。
文件夹必须由用户创建,并且 admin
权限。
模板类型和策略将按照以下优先级顺序跨所有文件夹继承:
/conf/global
/apps
/libs
将创建所有允许条目的列表。 如果有任何配置重叠( path
/ label
),则只有最接近当前文件夹的实例会呈现给用户。
要创建新文件夹,您可以执行以下任一操作:
可以通过编程方式或使用CRXDE Lite为实例创建新文件夹(位于/conf下)。
必须使用以下结构:
/conf
<your-folder-name> [sling:Folder]
settings [sling:Folder]
wcm [cq:Page]
templates [cq:Page]
policies [cq:Page]
然后,您可以在文件夹根节点上定义以下属性:
<your-folder-name> [sling:Folder]
jcr:title
String
除了标准创作权限和特权之外(例如, content-authors
)现在,您需要分配组并定义作者所需的访问权限(ACL),以便能够在新文件夹中创建模板。
此 template-authors
group是需要分配的默认组。 请参阅部分 ACL和组 了解详细信息。
转到 全局导航 -> 工具 > 配置浏览器.
左侧列出了现有文件夹,包括 global
文件夹。
单击创建。
在 创建配置 对话框需要配置以下字段:
单击 创建
在 配置浏览器, 您可以编辑全局文件夹并激活 可编辑的模板 选项,但并非建议的最佳做法。
创建模板文件夹后(通过CRXDE或使用配置浏览器),必须为模板文件夹的相应组定义ACL,以确保适当的安全性。
的模板文件夹 wknd教程 可用作示例。
此 template-authors
group是用于管理对模板的访问权限的组,并且在AEM中是标准组,但为空。 必须将用户添加到项目/站点的组中。
此 template-authors
组仅适用于必须能够创建新模板的用户。
编辑模板的功能非常强大,如果不正确操作,现有模板可能会受损。 因此,此角色应重点突出,仅包括符合条件的用户。
下表详细列出了模板编辑的必要权限。
路径 | 角色/组 | 权限 |
描述 |
---|---|---|---|
/conf/<your-folder>/settings/wcm/templates |
模板作者 |
读取、写入、复制 | 在特定站点中创建、读取、更新、删除和复制模板的模板作者 /conf 空间 |
匿名Web用户 | 读取 | 匿名Web用户在呈现页面时必须读取模板 | |
内容作者 | 复制 | replicateContent作者在激活页面时需要激活页面的模板 | |
/conf/<your-folder>/settings/wcm/policies |
Template Author |
读取、写入、复制 | 在特定站点中创建、读取、更新、删除和复制模板的模板作者 /conf 空间 |
匿名Web用户 | 读取 | 匿名Web用户在呈现页面时必须读取策略 | |
内容作者 | 复制 | 内容作者在激活页面时需要激活页面模板的策略 | |
/conf/<site>/settings/template-types |
模板作者 | 读取 | 模板作者根据一种预定义的模板类型创建新模板。 |
匿名Web用户 | 无 | 匿名Web用户不得访问模板类型 |
此默认值 template-authors
组仅涵盖项目设置,其中所有 template-authors
允许成员访问和创作所有模板。 对于更复杂的设置,需要多个模板作者组来分隔对模板的访问,则必须创建更多自定义模板作者组。 但是,模板作者组的权限将仍然相同。
创建新模板时,您需要指定模板类型:
模板类型可以有效地为模板提供模板。 创建新模板时,使用所选模板类型的结构和初始内容创建新模板。
模板类型允许您定义:
AEM提供少量现成的模板类型,如“HTML5页”和“自适应表单页”。
模板类型通常由开发人员定义。
现成的模板类型存储在下:
/libs/settings/wcm/template-types
您不得更改 /libs
路径。 这是因为 /libs
可随时通过AEM更新覆盖。
您站点特定的模板类型应存储在类似位置:
/apps/settings/wcm/template-types
自定义模板类型的定义应存储在用户定义的文件夹中(推荐),或者存储在 global
. 例如:
/conf/<my-folder-01>/<my-folder-02>/settings/wcm/template-types
/conf/<my-folder>/settings/wcm/template-types
/conf/global/settings/wcm/template-types
模板类型必须遵循正确的文件夹结构(即 /settings/wcm/...
),否则将无法找到模板类型。
如果已创建可作为其他模板基础的模板,则可以将此模板作为模板类型复制。
templates
节点到 template-types
下的节点 模板文件夹.templates
下的节点 模板文件夹.template-types
节点,删除所有 cq:template
和 cq:templateType
全部属性 jcr:content
节点。您还可以在GitHub上使用示例可编辑模板作为基础来开发自己的模板类型。
GITHUB上的代码
您可以在GitHub上找到此页面的代码
可编辑模板的定义已存储 用户定义的文件夹 (推荐)或另一种方法 global
. 例如:
/conf/<my-folder>/settings/wcm/templates
/conf/<my-folder-01>/<my-folder-02>/settings/wcm/templates
/conf/global/settings/wcm/templates
模板的根节点属于类型 cq:Template
骨架结构为:
<template-name>
initial
jcr:content
root
<component>
...
<component>
jcr:content
@property status
policies
jcr:content
root
@property cq:policy
<component>
@property cq:policy
...
<component>
@property cq:policy
structure
jcr:content
root
<component>
...
<component>
cq:responsive
breakpoints
thumbnail.png
主要内容包括:
<template-name>
[initial](#initial-content)
jcr:content
[structure](#structure)
[policies](#policies)
thumbnail.png
此节点保存模板的属性:
jcr:title
status
String
draft
, enabled
或 disabled
定义生成页面的结构:
与初始内容合并( /initial
)。
对结构所做的更改将反映在使用模板创建的任何页面中。
此 root
( structure/jcr:content/root
)节点定义将在生成页面中可用的组件列表。
editable
属性设置为 true
.initial
分支。此 cq:responsive
节点包含响应布局的定义。
定义新页面在创建时将具有的初始内容:
jcr:content
复制到任何新页面的节点。/structure
)。root
node包含组件列表,用于定义生成的页面中可用的组件。时间 编辑模板您可以定义布局,此函数使用 标准响应式布局.
内容策略定义组件的设计属性。 例如,可用元件或最小/最大尺寸。 这些选项适用于模板(以及使用模板创建的页面)。 可以在模板编辑器中创建和选择内容策略。
属性 cq:policy
,位于 root
节点
/conf/<your-folder>/settings/wcm/templates/<your-template>/policies/jcr:content/root
为页面的段落系统提供对内容策略的相对引用。
属性 cq:policy
,在下的组件显式节点上 root
,提供指向各个组件策略的链接。
实际的策略定义存储在以下位置:
/conf/<your-folder>/settings/wcm/policies/wcm/foundation/components
策略定义的路径取决于组件的路径。 cq:policy
包含对配置本身的相对引用。
页面策略允许您定义 内容策略 页面(主parsys)的模板或生成页面中。
启用模板
在使用模板之前,必须通过以下任一方式启用模板:
启用模板 从 模板 控制台。
在上设置状态属性 jcr:content
节点。
例如,在:
/conf/<your-folder>/settings/wcm/templates/<your-template>/jcr:content
定义属性:
enabled
允许的模板
在上定义允许的模板路径 页面属性 子分支的相应页面或根页面的属性。
设置属性:
cq:allowedTemplates
在
jcr:content
所需分支的节点。
例如,其值为:
/conf/<your-folder>/settings/wcm/templates/.*
从可编辑模板创建的页面:
使用合并的子树创建 structure
和 initial
在模板中
对模板和模板类型中包含的信息具有引用。 这可通过以下方式实现 jcr:content
节点具有以下属性:
cq:template
— 提供对实际模板的动态引用;使对模板所做的更改能够反映在实际页面上。
cq:templateType
— 提供对模板类型的引用。
上图显示了模板、内容和组件如何相互关联:
/content/<my-site>/<my-page>
— 引用模板的结果页面。 内容控制着整个过程。 根据定义访问相应的模板和组件。/conf/<my-folder>/settings/wcm/templates/<my-template>
- 模板和相关内容策略 定义页面配置。/apps/<my-site>/components
— 在创作和发布环境中,内容都由组件渲染。呈现页面时:
模板:
cq:template
其属性 jcr:content
将引用节点以访问与该页面对应的模板。组件:
structure/jcr:content
模板树 jcr:content
页面的树。
jcr:content
节点;同一路径位于 policies/jcr:content
随后将搜索模板的节点。
cq:policy
此节点的属性指向实际内容策略(即,它包含该组件的设计配置)。
在站点管理界面中创建新页面时,可用模板的列表取决于新页面的位置和每个模板中指定的版面限制。
以下属性确定模板是否 T
允许用于作为页面的子项放置的新页面 P
. 以下每个属性都是一个多值字符串,其中包含零个或多个用于与路径匹配的正则表达式:
此 cq:allowedTemplates
的属性 jcr:content
子节点 P
或祖先 P
.
此 allowedPaths
属性 T
.
此 allowedParents
属性 T
.
此 allowedChildren
模板的属性 P
.
评估工作如下:
第一个非空 cq:allowedTemplates
在页面层次结构中以开头升序时发现属性 P
与以下路径匹配: T
. 如果没有任何值匹配, T
被拒绝。
如果 T
具有非空 allowedPaths
属性,但没有任何值匹配以下项的路径: P
, T
被拒绝。
如果上述两个属性为空或不存在, T
被拒绝,除非它属于与相同的应用程序 P
. T
属于与相同的应用程序 P
当且仅当第二级路径的名称 T
与的路径的第二级名称相同 P
. 例如,模板 /apps/wknd/templates/foo
属于与页面相同的应用程序 /content/wknd
.
如果 T
具有非空 allowedParents
属性,但没有任何值匹配以下项的路径: P
, T
被拒绝。
如果模板 P
具有非空 allowedChildren
属性,但没有任何值匹配以下项的路径: T
, T
被拒绝。
在所有其他情况下, T
允许。
下图描述了模板评估流程:
AEM提供了多个属性来控制下允许的模板 站点. 但是,将它们组合在一起可能会导致非常复杂的规则,这些规则难以跟踪和管理。
因此,Adobe建议您从定义以下内容开始:
仅 cq:allowedTemplates
属性
仅在站点根上
有关示例,请参阅 wknd教程 内容: /content/wknd/jcr:content
属性 allowedPaths
, allowedParents
、和 allowedChildren
还可以放置在模板上,以定义更复杂的规则。 但是,如果可能,它是 很多 定义更简单,以便进一步定义 cq:allowedTemplates
属性(如果需要进一步限制允许的模板)。
另一个优势是 cq:allowedTemplates
作者可以在以下位置更新属性: 高级 的选项卡 页面属性. 无法使用(标准)UI更新其他模板属性,因此需要开发人员维护规则并为每次更改部署代码。
要限制哪些模板可用于在给定页面下创建子页面,请使用 cq:allowedTemplates
属性 jcr:content
页面节点,用于指定允许作为子页面的模板列表。 列表中的每个值都必须是允许的子页面的模板的绝对路径,例如 /apps/wknd/templates/page-content
.
您可以使用 cq:allowedTemplates
模板的属性 jcr:content
节点,以将此配置应用于使用此模板的所有新创建的页面。
如果要添加更多约束(例如,关于模板层次结构的约束),可以使用 allowedParents/allowedChildren
属性。 然后,您可以明确指定从模板T创建的页面必须是从模板T创建的页面的父项/子项。