页面和模板 pages-and-template
在本章中,让我们探讨基础页面组件与可编辑模板之间的关系。 了解如何根据中的某些模型构建无样式的文章模板 Adobe XD. 在构建模板的过程中,将涵盖可编辑模板的核心组件和高级策略配置。
先决条件 prerequisites
查看所需的工具和设置说明 本地开发环境.
入门项目
查看本教程所基于的基本行代码:
-
查看
tutorial/pages-templates-start
分支自 GitHubcode language-shell $ cd ~/code/aem-guides-wknd $ git checkout tutorial/pages-templates-start
-
使用您的Maven技能将代码库部署到本地AEM实例:
code language-shell $ mvn clean install -PautoInstallSinglePackage
note note NOTE 如果使用AEM 6.5或6.4,请附加 classic
配置文件到任何Maven命令。code language-shell $ mvn clean install -PautoInstallSinglePackage -Pclassic
您始终可以在上查看完成的代码 GitHub 或者切换到分支机构在本地签出代码 tutorial/pages-templates-solution
.
目标
- Inspect在Adobe XD中创建的页面设计,并将其映射到核心组件。
- 了解可编辑模板的详细信息,以及如何使用策略对页面内容实施精细控制。
- 了解如何链接模板和页面
您即将构建的内容 what-build
在本教程的这一可选部分中,您将构建一个新的文章页面模板,此模板可用于创建文章页面并与通用结构保持一致。 文章页面模板基于Adobe XD中的设计和一个UI套件。 本章仅侧重于构建模板的结构或框架。 未实施任何样式,但模板和页面可正常使用。
使用Adobe XD进行UI规划 adobexd
通常,规划新网站时首先要考虑模拟和静态设计。 Adobe XD 是构建用户体验的设计工具。 接下来,我们将检查UI套件和模型,以帮助规划文章页面模板的结构。
下载 WKND文章设计文件.
创建文章页面模板
创建页面时,必须选择一个模板,该模板用作创建页面的基础。 模板定义生成页面的结构、初始内容和允许的组件。
有三个主要方面 可编辑的模板:
- 结构 — 定义属于模板一部分的组件。 内容作者无法编辑这些内容。
- 初始内容 — 定义模板开始使用的组件,内容作者可以编辑和/或删除这些组件
- 策略 — 定义有关组件的行为方式以及作者拥有的选项的配置。
接下来,在AEM中创建一个与模型结构匹配的模板。 这种情况发生在AEM的本地实例中。 按照以下视频中的步骤进行操作:
上述视频的高级步骤:
结构配置
-
使用创建模板 页面模板类型,已命名 文章页面.
-
切换到 结构 模式。
-
添加 体验片段 要用作 页眉 位于模板顶部。
- 配置组件以指向
/content/experience-fragments/wknd/us/en/site/header/master
. - 将策略设置为 页眉 并确保 默认元素 设置为
header
. 此header
元素将在下一章中使用CSS进行定位。
- 配置组件以指向
-
添加 体验片段 要用作 页脚 位于模板底部。
- 配置组件以指向
/content/experience-fragments/wknd/us/en/site/footer/master
. - 将策略设置为 页脚 并确保 默认元素 设置为
footer
. 此footer
元素将在下一章中使用CSS进行定位。
- 配置组件以指向
-
锁定 主要 最初创建模板时包含的容器。
- 将策略设置为 页面主要 并确保 默认元素 设置为
main
. 此main
元素将在下一章中使用CSS进行定位。
- 将策略设置为 页面主要 并确保 默认元素 设置为
-
添加 图像 组件到 主要 容器。
- 解锁 图像 组件。
-
添加 痕迹导航 组件位于 图像 组件进行标记。
- 为创建策略 痕迹导航 组件已命名 文章页面 — 痕迹导航. 设置 导航开始级别 到 4.
-
添加 容器 组件位于 痕迹导航 组件和内部 主要 容器。 这用作 内容容器 用于模板。
- 解锁 内容 容器。
- 将策略设置为 页面内容.
-
添加其他 容器 组件位于 内容容器. 这用作 侧边栏 模板的容器。
- 解锁 侧边栏 容器。
- 创建名为的策略 文章页面 — 侧边栏.
- 配置 允许的组件 下 WKND站点项目 — 内容 要包括,请执行以下操作: 按钮, 下载, 图像, 列表, 分隔符, 社交媒体共享, 文本、和 标题.
-
更新页面根容器的策略。 这是模板上最外部的容器。 将策略设置为 页面根目录.
- 下 容器设置,设置 布局 到 响应式网格.
-
参与以下项目的布局模式: 内容容器. 从右向左拖动手柄,并将容器收缩为八列宽。
-
参与以下项目的布局模式: 侧边栏容器. 从右向左拖动手柄,并将容器收缩为四列宽。 然后,将左侧手柄从左到右拖动一列,以使容器3列宽,并在 内容容器.
-
打开移动模拟器并切换到移动断点。 再次参与布局模式并做出 内容容器 和 侧边栏容器 页面的完整宽度。 这会将容器垂直栈叠在移动设备断点中。
-
更新策略 文本 中的组件 内容容器.
- 将策略设置为 内容文本.
- 下 插件 > 段落样式,检查 启用段落样式 并确保 报价块 已启用。
初始内容配置
-
切换到 初始内容 模式。
-
添加 标题 组件到 内容容器. 它用作文章标题。 如果留空,则会自动显示当前页面的标题。
-
添加秒数 标题 第一个标题组件下的组件。
- 使用文本“By Author”配置组件。 这是一个文本占位符。
- 将类型设置为
H4
.
-
添加 文本 组件位于 按作者 标题组件。
-
添加 标题 组件到 侧边栏容器.
- 使用文本配置组件:“共享此故事”。
- 将类型设置为
H5
.
-
添加 社交媒体共享 组件位于 共享此故事 标题组件。
-
添加 分隔符 组件位于 社交媒体共享 组件。
-
添加 下载 组件位于 分隔符 组件。
-
添加 列表 组件位于 下载 组件。
-
更新 初始页面属性 用于模板。
- 下 社交媒体 > 社交媒体共享,检查 facebook 和 pinterest
启用模板并添加缩略图
-
在“模板”控制台中,导航到 http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf/wknd
-
启用 文章页面模板。
-
编辑文章页面模板的属性并上传以下缩略图,以快速识别使用文章页面模板创建的页面:
使用体验片段更新页眉和页脚 experience-fragments
创建全局内容(如页眉或页脚)时的常见做法是使用 体验片段. 体验片段,允许用户组合多个组件以创建单个可引用的组件。 体验片段具有支持多站点管理和 本地化.
AEM项目原型生成了页眉和页脚。 接下来,更新体验片段以匹配模型。 按照以下视频中的步骤进行操作:
上述视频的高级步骤:
-
使用以下位置的包管理器上传并安装内容包: http://localhost:4502/crx/packmgr/index.jsp
-
更新Web变体模板,该模板是在以下位置用于体验片段的模板 http://localhost:4502/editor.html/conf/wknd/settings/wcm/templates/xf-web-variation/structure.html
- 更新策略 容器 模板上的组件。
- 将策略设置为 XF根.
- 在 允许的组件 选择组件组 WKND Sites项目 — 结构 要包含 语言导航, 导航、和 快速搜索 组件。
更新标头体验片段
-
打开在以下位置呈现标题的体验片段: http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/header/master.html
-
配置根 容器 片段的URL。 这是最外层 容器.
- 设置 布局 到 响应式网格
-
添加 wknd深色徽标 作为顶部图像 容器. 徽标包含在上一步中安装的软件包中。
- 修改布局 wknd深色徽标 成为 二 列宽。 从右到左拖动手柄。
- 使用配置徽标 替换文本 “WKND徽标”的。
- 将徽标配置到 链接 到
/content/wknd/us/en
主页。
-
配置 导航 已放置在页面上的组件。
- 设置 排除根级别 到 1.
- 设置 导航结构深度 到 1.
- 修改布局 导航 要成为的组件 八 列宽。 从右到左拖动手柄。
-
删除 语言导航 组件。
-
修改布局 Search 要成为的组件 二 列宽。 从右到左拖动手柄。 现在,所有组件都应水平对齐一行。
更新页脚体验片段
-
打开呈现页脚的体验片段,位于 http://localhost:4502/editor.html/content/experience-fragments/wknd/us/en/site/footer/master.html
-
配置根 容器 片段的URL。 这是最外层 容器.
- 设置 布局 到 响应式网格
-
添加 WKND浅色徽标 作为顶部图像 容器. 徽标包含在上一步中安装的软件包中。
- 修改布局 WKND浅色徽标 成为 二 列宽。 从右到左拖动手柄。
- 使用配置徽标 替换文本 “WKND徽标光”的徽标。
- 将徽标配置到 链接 到
/content/wknd/us/en
主页。
-
添加 导航 徽标下的组件。 配置 导航 组件:
- 设置 排除根级别 到 1.
- 取消选中 收集所有子页面.
- 设置 导航结构深度 到 1.
- 修改布局 导航 要成为的组件 八 列宽。 从右到左拖动手柄。
创建文章页面
接下来,使用文章页面模板创建页面。 创作页面的内容以匹配站点模型。 按照以下视频中的步骤进行操作:
上述视频的高级步骤:
-
导航到站点控制台,网址为 http://localhost:4502/sites.html/content/wknd/us/en/magazine.
-
在下创建页面 WKND > US > EN > 杂志.
- 选择 文章页面 模板。
- 下 属性 设置 标题 到《洛杉矶滑板公园终极指南》
- 设置 名称 到“滑板公园指南”
-
替换 按作者 标题中包含“由Stacey Roswells撰写”。
-
更新 文本 组件中包含用于填充文章的段落。 可以使用以下文本文件作为副本: la-skate-parks-copy.txt.
-
添加其他 文本 组件。
- 更新组件以包括引用:“没有比洛杉矶更适合清除的地方。”
- 以全屏模式编辑富文本编辑器,并修改上述引号以使用 报价块 元素。
-
继续填充文章正文以匹配模型。
-
配置 下载 组件以使用文章的PDF版本。
- 下 下载 > 属性,单击该复选框可 从DAM资源获取标题.
- 设置 描述 收件人:“获取完整故事”。
- 设置 操作文本 收件人:“下载PDF”。
-
配置 列表 组件。
- 下 列表设置 > 使用以下项目生成列表,选择 子页面.
- 设置 父页面 到
/content/wknd/us/en/magazine
. - 在 项目设置 check 链接项目 并选中 显示日期.
Inspect节点结构 node-structure
此时,文章页面显然未设置样式。 但是,基本结构已准备就绪。 接下来,检查文章页面的节点结构,以更好地了解模板、页面和组件的角色。
在本地AEM实例上使用CRXDE-Lite工具查看基础节点结构。
-
打开 CRXDE-Lite 并使用树导航来导航到
/content/wknd/us/en/magazine/guide-la-skateparks
. -
单击
jcr:content
节点位于la-skateparks
页面并查看属性:注意的值
cq:template
,指向/conf/wknd/settings/wcm/templates/article-page
,即之前创建的文章页面模板。另外请注意的值
sling:resourceType
,指向wknd/components/page
. 这是由AEM项目原型创建的页面组件,负责根据模板呈现页面。 -
展开
jcr:content
节点在下/content/wknd/us/en/magazine/guide-la-skateparks/jcr:content
并查看节点层次结构:您应该能够将每个节点松散映射到已创作的组件。 查看您是否可以通过检查带有前缀的节点来识别所使用的不同布局容器
container
. -
接下来,在检查页面组件
/apps/wknd/components/page
. 以CRXDE Lite查看组件属性:只有两个HTL脚本,
customfooterlibs.html
和customheaderlibs.html
在页面组件下。 那么,此组件如何呈现页面呢?此
sling:resourceSuperType
属性指向core/wcm/components/page/v2/page
. 此属性允许WKND的页面组件继承 所有 核心组件页面组件的功能。 这是第一个例子,我们称之为 代理组件模式. 可以找到更多信息 此处. -
Inspect WKND组件中的另一个组件,
Breadcrumb
组件来源:/apps/wknd/components/breadcrumb
. 请注意,相同的sling:resourceSuperType
属性可以找到,但这次它指向core/wcm/components/breadcrumb/v2/breadcrumb
. 这是使用代理组件模式包含核心组件的另一个示例。 事实上,WKND代码库中的所有组件都是AEM核心组件的代理(自定义演示HelloWorld组件除外)。 最佳实践是尽可能多地重复使用核心组件的功能 早于 编写自定义代码。 -
接下来,在以下位置检查核心组件页面:
/libs/core/wcm/components/page/v2/page
使用CRXDE Lite:note note NOTE 在AEM 6.5/6.4中,核心组件位于 /apps/core/wcm/components
. 在AEMas a Cloud Service中,核心组件位于/libs
和会自动更新。请注意,此页面下包含许多脚本文件。 核心组件页面包含多项功能。 此功能分为多个脚本,以便更轻松地维护和读取。 您可以通过打开
page.html
并查找data-sly-include
:code language-html <!--/* /libs/core/wcm/components/page/v2/page/page.html */--> <!DOCTYPE HTML> <html data-sly-use.page="com.adobe.cq.wcm.core.components.models.Page" lang="${page.language}" data-sly-use.head="head.html" data-sly-use.footer="footer.html" data-sly-use.redirect="redirect.html"> <head data-sly-call="${head.head @ page = page}"></head> <body class="${page.cssClassNames}" id="${page.id}" data-cmp-data-layer-enabled="${page.data ? true : false}"> <script data-sly-test.dataLayerEnabled="${page.data}"> window.adobeDataLayer = window.adobeDataLayer || []; adobeDataLayer.push({ page: JSON.parse("${page.data.json @ context='scriptString'}"), event:'cmp:show', eventInfo: { path: 'page.${page.id @ context="scriptString"}' } }); </script> <sly data-sly-test.isRedirectPage="${page.redirectTarget && (wcmmode.edit || wcmmode.preview)}" data-sly-call="${redirect.redirect @ redirectTarget = page.redirectTarget}"></sly> <sly data-sly-test="${!isRedirectPage}"> <sly data-sly-include="body.skiptomaincontent.html"></sly> <sly data-sly-include="body.socialmedia_begin.html"></sly> <sly data-sly-include="body.html"></sly> <sly data-sly-call="${footer.footer @ page = page}"></sly> <sly data-sly-include="body.socialmedia_end.html"></sly> </sly> </body> </html>
将HTL拆分为多个脚本的另一个原因是允许代理组件覆盖单个脚本以实施自定义业务逻辑。 HTL脚本
customfooterlibs.html
、和customheaderlibs.html
创建用于明确目的,以便由实施项目覆盖。您可以了解有关可编辑模板如何影响渲染的更多信息 内容页面(阅读本文).
-
Inspect是另一个核心组件,如上的痕迹导航
/libs/core/wcm/components/breadcrumb/v2/breadcrumb
. 查看breadcrumb.html
用于了解最终如何生成痕迹导航组件标记的脚本。
将配置保存到源代码管理 configuration-persistence
通常,尤其是在开始AEM项目时,将配置(如模板和相关内容策略)保留到源代码控制中很有价值。 这可确保所有开发人员都针对同一组内容和配置工作,并可确保环境之间具有额外的一致性。 一旦项目达到一定的成熟度,管理模板的操作就可以交给一组特殊的超级用户。
目前,模板会被视为其他代码段,并且会同步 文章页面模板 作为项目的一部分。
在此之前,代码会从AEM项目推送到AEM的本地实例。 此 文章页面模板 直接在AEM的本地实例上创建,因此它需要 导入 将模板移入AEM项目。 此 ui.content 出于此特定目的,AEM项目中包含了模块。
在VSCode IDE中,使用完成以下几个步骤 VSCode AEM同步 插件。 但是,他们可以使用您配置的任何IDE来执行 导入 或从AEM的本地实例导入内容。
-
在中,VSCode打开
aem-guides-wknd
项目。 -
展开 ui.content 模块。 展开
src
文件夹并导航到/conf/wknd/settings/wcm/templates
. -
右键单击 该
templates
文件夹并选择 从AEM服务器导入:此
article-page
应导入,并且page-content
,xf-web-variation
模板也应更新。 -
重复这些步骤以导入内容,但选择 策略 文件夹来源
/conf/wknd/settings/wcm/policies
. -
Inspect
filter.xml
文件来源ui.content/src/main/content/META-INF/vault/filter.xml
.code language-xml <!--ui.content filter.xml--> <?xml version="1.0" encoding="UTF-8"?> <workspaceFilter version="1.0"> <filter root="/conf/wknd" mode="merge"/> <filter root="/content/wknd" mode="merge"/> <filter root="/content/dam/wknd" mode="merge"/> <filter root="/content/experience-fragments/wknd" mode="merge"/> </workspaceFilter>
此
filter.xml
文件负责标识随包一起安装的节点的路径。 请注意mode="merge"
对于每个表示现有内容不可修改的过滤器,只添加新内容。 由于内容作者可能正在更新这些路径,因此代码部署必须更新 非 覆盖内容。 请参阅 FileVault文档 以了解有关使用筛选条件元素的更多详细信息。比较
ui.content/src/main/content/META-INF/vault/filter.xml
和ui.apps/src/main/content/META-INF/vault/filter.xml
了解每个模块管理的不同节点。note warning WARNING 为了确保WKND引用站点的一致部署,设置了项目的一些分支,以便 ui.content
覆盖JCR中的任何更改。 这是按设计(即针对解决方案分支)进行的,因为代码/样式是为特定策略编写的。
恭喜! congratulations
恭喜,您已使用Adobe Experience Manager Sites创建了一个模板和页面。
后续步骤 next-steps
此时,文章页面显然未设置样式。 请遵循 客户端库和前端工作流 本教程将介绍有关包含CSS和JavaScript以将全局样式应用于站点并集成专用前端内部版本的最佳实践。
查看完成的代码 GitHub 或在Git分支上本地查看和部署代码 tutorial/pages-templates-solution
.
- 克隆 github.com/adobe/aem-wknd-guides 存储库。
- 查看
tutorial/pages-templates-solution
分支。