页面模板 — 可编辑

可编辑模板已引入到:

  • 允许专业作者执行以下操作 创建和编辑模板.

    • 这种专业作者被称为 模板作者
    • 模板作者必须是 template-authors 组。
  • 提供保留与从中创建的任何页面的动态连接的模板。 这样做可确保对模板所做的任何更改都反映在页面本身中。

  • 使页面组件变得更通用,以便无需自定义即可使用核心页面组件。

使用可编辑的模板时,构成页面的片段会隔离在组件中。 您可以在UI中配置必要的组件组合,从而无需为每个页面变体开发新的页面组件。

注意

静态模板 也可用。

本文档:

  • 提供了创建可编辑模板的概述

  • 描述创建可编辑模板所需的管理员/开发人员任务

  • 描述可编辑模板的技术基础

本文档假设您已经熟悉创建和编辑模板。 请参阅创作文档 创建页面模板,其中详细说明了向模板作者公开的可编辑模板的功能。

注意

以下教程可能也适合在新项目中设置可编辑页面模板:
AEM Sites快速入门第2部分 — 创建基础页面和模板

创建新模板

创建可编辑模板主要是通过 模板控制台和模板编辑器 模板作者。 本节概述了此过程,并在后面介绍了技术级别发生的情况。

有关如何在AEM项目中使用可编辑模板的信息,请参阅 使用Lazybones创建AEM项目.

在创建新的可编辑模板时,您可以:

  1. 创建 模板文件夹. 此文件夹不是强制性的,但建议使用最佳实践。

  2. 选择 模板类型. 复制此类型以创建 模板定义.

    注意

    现成提供了一系列模板类型。 您还可以 创建您自己的特定于站点的模板类型(如有必要)。

  3. 配置新模板的结构、内容策略、初始内容和布局。

    结构

    • 利用结构,可为模板定义组件和内容。

    • 不能在生成的页面上移动模板结构中定义的组件,也不能从任何生成的页面中删除这些组件。

      • 如果您是在 We.Retail 示例内容,您可以选择基础组件或使用 核心组件.
    • 如果您希望页面作者能够添加和删除组件,请向模板中添加一个段落系统。

    • 可以解锁组件,然后再将其锁定,以便定义初始内容。

    有关模板作者如何定义结构的详细信息,请参阅 创建页面模板.

    有关结构的技术详细信息,请参阅 结构 在本文档中。

    策略

    • 内容策略定义组件的设计属性。

      • 例如,可用元件或最小/最大尺寸。
    • 这些策略适用于模板(以及使用模板创建的页面)。

    有关模板作者如何定义策略的详细信息,请参阅 创建页面模板.

    有关策略的技术详细信息,请参阅 内容策略 在本文档中。

    初始内容

    • 初始内容定义首次根据模板创建页面时显示的内容。
    • 随后,页面作者可以编辑初始内容。

    有关模板作者如何定义结构的详细信息,请参阅 创建页面模板.

    有关初始内容的技术详细信息,请参阅 初始内容 在本文档中。

    布局

    • 您可以为各种设备定义模板布局。
    • 模板的响应式布局与页面创作时的响应式布局功能相同。

    有关模板作者如何定义模板布局的详细信息,请参阅 创建页面模板.

    有关模板布局的技术详细信息,请参阅 版面 在本文档中。

  4. 启用模板,然后为特定内容树允许该模板。

    • 可以启用或禁用模板,使其对页面作者可用或不可用。
    • 可以使模板可用于或不可用于某些页面分支。

    有关模板作者如何启用模板的详细信息,请参阅 创建页面模板.

    有关启用模板的技术详细信息,请参阅 为我们启用和允许模板e在此文档中

  5. 使用它创建内容页面。

    • 使用模板创建页面时,静态模板与可编辑模板之间没有可见的区别和指示。
    • 对于页面作者,该过程是透明的。

    有关页面作者如何使用模板创建页面的详细信息,请参阅 创建和组织页面.

    有关使用可编辑模板创建页面的技术详细信息,请参阅 生成内容页面 在本文档中。

小贴士

切勿在模板中输入任何必须国际化的信息。 出于内部化目的, 核心组件的本地化功能 推荐。

注意

模板是简化页面创建工作流的强大工具。不过,太多的模板会让作者不知所措,并使页面创建变得混乱。一个好的经验法则是将模板的数量保持在 100 个以内。

由于潜在的性能影响,Adobe 建议不要使用超过 1000 个模板。

注意

编辑器客户端库假定存在 cq.shared 内容页面中的命名空间。 如果不存在,则会导致JavaScript错误 Uncaught TypeError: Cannot read property 'shared' of undefined.

所有示例内容页面都包含 cq.shared,因此任何基于它们的内容都会自动包含 cq.shared. 但是,如果您决定从头开始创建自己的内容页面,而不基于示例内容,则必须确保包含 cq.shared 命名空间。

参见 使用客户端库 以进一步了解。

模板文件夹

要组织模板,您可以使用以下文件夹:

  • 全局
  • 站点特定您为组织模板而创建的站点特定文件夹是使用具有管理员权限的帐户创建的。
注意

即使您可以嵌套文件夹,当用户在 模板 控制台将它们显示为平面结构。

在标准AEM实例中, 全局 模板控制台中存在文件夹。 此文件夹包含默认模板,如果在当前文件夹中未找到策略和/或模板类型,则充当后备。 您可以将默认模板添加到此文件夹或创建一个文件夹(推荐)。

注意

最佳做法是创建一个文件夹来存放自定义模板,而不是使用全局文件夹。

注意

文件夹必须由用户创建,并且 admin 权限。

模板类型和策略将按照以下优先级顺序跨所有文件夹继承:

  1. 当前文件夹。
  2. 当前文件夹的父级或父级。
  3. /conf/global
  4. /apps
  5. /libs

将创建所有允许条目的列表。 如果有任何配置重叠( path/ label),则只有最接近当前文件夹的实例会呈现给用户。

要创建文件夹,请执行以下操作:

  • 以编程方式或使用CRXDE Lite
  • 使用配置浏览器

使用 CRXDE Lite

  1. 可以通过编程方式或使用CRXDE Lite为实例创建新文件夹(位于/conf下)。

    必须使用以下结构:

    /conf
        <your-folder-name> [sling:Folder]
            settings [sling:Folder]
                wcm [cq:Page]
                    templates [cq:Page]
                    policies [cq:Page]
    
  2. 然后,您可以在文件夹根节点上定义以下属性:

    <your-folder-name> [sling:Folder]

    名称: jcr:title

    • 类型: String

    • 值:您希望在 模板 控制台。

  3. In 加法 标准创作权限和特权(例如, content-authors),分配组并定义作者所需的访问权限(ACL),以便能够在新文件夹中创建模板。

    template-authors group是必须分配的默认组。 请参阅以下部分 ACL和组 了解详细信息。

    参见 访问权限管理 有关管理和分配访问权限的完整详细信息。

使用配置浏览器

  1. 转到 全局导航 -> 工具 > 配置浏览器.

    左侧列出了现有文件夹,包括 全局 文件夹。

  2. 单击​创建

  3. 创建配置 对话框,必须配置以下字段:

    • 标题:提供配置文件夹的标题
    • 可编辑的模板:选择以允许在此文件夹中使用可编辑的模板
  4. 单击 创建

注意

在配置浏览器中,您可以编辑全局文件夹并激活 可编辑的模板 选项。 但是,建议不要采用这种做法。

请参阅 配置浏览器 文档,以了解更多信息。

ACL和组

创建模板文件夹后(通过CRXDE或使用配置浏览器),必须为模板文件夹的相应组定义ACL,以确保适当的安全性。

的模板文件夹 We.Retail 参考实现 可用作示例。

模板 — 作者组

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 允许成员访问和创作所有模板。 对于更复杂的设置,需要多个模板作者组来分隔对模板的访问,则必须创建更多自定义模板作者组。 但是,模板作者组的权限将仍然相同。

/conf/global下的旧版模板

不将模板存储到中 /conf/global. 但是,对于某些旧版安装,此位置可能仍存在模板。 在此类遗留情况下,应 /conf/global 明确配置路径。

路径 角色/组 权限
描述
/conf/global/settings/wcm/templates 模板作者 读取、写入、复制 在中创建、读取、更新、删除和复制模板的模板作者 /conf/global
匿名Web用户 读取 匿名Web用户在呈现页面时必须读取模板
内容作者 复制 内容作者在激活页面时必须激活页面的模板
/conf/global/settings/wcm/policies Template Author 读取、写入、复制 在中创建、读取、更新、删除和复制模板的模板作者 /conf/global
匿名Web用户 读取 匿名Web用户在呈现页面时必须读取策略
内容作者 复制 内容作者在激活页面时必须激活页面模板的策略
/conf/global/settings/wcm/template-types 模板作者 读取 模板作者根据预定义的模板类型之一创建模板
匿名Web用户 匿名Web用户不得访问模板类型

模板类型

创建模板时,请指定模板类型:

  • 模板类型可以有效地为模板提供模板。 创建模板时,使用所选模板类型的结构和初始内容来创建模板。

    • 将复制模板类型以创建模板。
    • 复制后,模板和模板类型之间的唯一连接是用作信息的静态引用。
  • 模板类型允许您定义:

    • 页面组件的资源类型。
    • 根节点的策略,定义模板编辑器中允许的组件。
    • Adobe建议您在模板类型上为响应式网格和移动设备仿真器的设置定义断点。 此步骤是可选的,因为也可以在单个模板上定义配置(请参阅 模板类型和移动设备组)。
  • AEM提供少量现成的模板类型,如“HTML5页”和“自适应表单页”。

    • 以下部分提供了其他示例 We.Retail 示例内容。
  • 模板类型通常由开发人员定义。

现成的模板类型存储在下:

  • /libs/settings/wcm/template-types
注意

请勿更改 /libs 路径。 原因在于 /libs 下次升级实例时将被覆盖(并且在应用修补程序或功能包时可能被覆盖)。

您站点特定的模板类型应存储在类似位置:

  • /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/...),否则未找到模板类型。

模板类型和移动设备组

设备组 用于可编辑模板(设置为属性的相对路径) cq:deviceGroups)定义哪些移动设备可用作中的模拟器 布局模式 页面创作。 此值可以在以下两个位置设置:

  • 在可编辑模板类型上
  • 在可编辑模板上

创建新的可编辑模板时,该值将从模板类型复制到单个模板。 如果未在类型上设置该值,则可以在模板上设置该值。 创建模板后,不会从该类型继承到模板。

注意

的值 cq:deviceGroups 必须设置为相对路径,例如 mobile/groups/responsive 而不是绝对路径,例如 /etc/mobile/groups/responsive.

注意

替换为 静态模板,的值 cq:deviceGroups 可以在站点的根目录中设置。

对于可编辑的模板,此值现在存储在模板级别,不支持在页面根级别存储。

创建模板类型

如果已创建可作为其他模板基础的模板,则可以将此模板作为模板类型复制。

  1. 像创建任何可编辑模板一样创建模板 如此处记录的那样,可用作模板类型的基础。
  2. 使用CRXDE Lite,从以下位置复制新创建的 templates 节点到 template-types 下的节点 模板文件夹.
  3. 从删除模板 templates 下的节点 模板文件夹.
  4. 在位于以下位置的模板副本中 template-types 节点,删除所有 cq:templatecq: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:content

此节点保存模板的属性:

  • 名称: jcr:title

  • 名称: status

    • 类型: String

    • draftenabled,或 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 包含对配置本身的相对引用。

注意

从可编辑模板创建的页面在页面编辑器中不提供设计模式。

policies 可编辑模板的树与下静态模板的设计模式配置具有相同的层次结构:

/etc/designs/<my-site>/jcr:content/<component-name>

静态模板的设计模式配置是按页面组件定义的。

页面策略

页面策略允许您定义 内容策略 页面(主parsys)的模板或生成页面中。

启用和允许使用模板

  1. 启用模板

    在使用模板之前,必须通过以下任一方式启用模板:

    • 启用模板模板 控制台。

    • 在上设置状态属性 jcr:content 节点。

      • 例如,在:

        /conf/<your-folder>/settings/wcm/templates/<your-template>/jcr:content

      • 定义属性:

        • 名称:状态
        • 类型:字符串
        • 价值: enabled
  2. 允许的模板

    /conf/<your-folder>/settings/wcm/templates/.*

生成内容页面

从可编辑模板创建的页面:

  • 使用合并的子树创建 structureinitial 在模板中

  • 对模板和模板类型中包含的信息具有引用。 您可以使用 jcr:content 节点具有以下属性:

    • cq:template
      提供对实际模板的动态引用;使对模板所做的更改能够反映在实际页面上。

    • cq:templateType
      提供对模板类型的引用。

chlimage_1-71

上图显示了模板、内容和组件如何相互关联:

  • 控制器 — /content/<my-site>/<my-page>
    引用模板的结果页面。 内容控制着整个过程。 根据定义访问相应的模板和组件。

  • 配置 — /conf/<my-folder>/settings/wcm/templates/<my-template>
    模板和相关内容策略 定义页面配置。

  • 模型 — OSGi捆绑包 OSGi包 实施功能。

  • 视图 — /apps/<my-site>/components
    在创作和发布环境中,内容呈现方式为 组件.

呈现页面时:

  • 模板:

    • cq:template 其属性 jcr:content 节点用于访问与该页面对应的模板。
  • 组件:

    • 页面组件合并 structure/jcr:content 模板树 jcr:content 页面的树。

    • 页面组件仅允许作者编辑已标记为可编辑的模板结构的节点(以及任何子节点)。

    • 在页面上呈现组件时,该组件的相对路径是从 jcr:content 节点;同一路径位于 policies/jcr:content 然后搜索模板的节点。

      • cq:policy 此节点的属性指向实际内容策略(即,包含该组件的设计配置)。

      • 此功能可让您有多个模板重复使用相同的内容策略配置。

在此页面上