如何 use/understand AEM Sling 资源合并、覆盖和覆盖概念
How to use/understand AEM Sling Resource Merger, override and Overlay concepts
我正在尝试了解 AEM Sling 资源合并概念。根据 Adobe 文档示例 Override (Configuring your Page Properties), Overlay (Customizing the Consoles (touch-optimized UI)) 我对如何使用它感到困惑,任何人都可以用简单的组件解释以更好地理解它。
给你一个解释
覆盖:
当您在 AEM 中覆盖组件时,意味着将组件从 /libs/
文件夹复制到 /apps/..
文件夹。您可以在 /apps/..
下新复制的组件上强加您自己的定义(如更改标题、组、业务逻辑功能)
根据默认的 OSGI 首选项,AEM 使用搜索路径查找资源,首先搜索 /apps/
分支,然后搜索 /libs
分支,以便您新复制的组件位于 /apps/
下优先于 /libs/
.
请注意,我们可以修改搜索路径及其优先顺序,方法是从 Felix console Apache Sling Resource Resolver Factory 配置。
您可以尝试叠加这些 libs/foundation/components/
列表、图像、文本和图像、旋转木马等。可以玩转和更改对话框的简单组件,jsp 级别功能并查看行为。
当你覆盖一个组件时,请记住,这两个组件都可以显示在作者的助手中,对于你的覆盖 /apps/..
组件,如果标题、componentGroups 与 /libs/..
组件相同,在 parsys 的设计模式下启用组件可以通过组件周围的括号 (foundation) vs (your project)
来区分它们。
覆盖:
您还可以通过使用 sling:resourceSuperType
属性.
extend/override 组件行为
通过创建所有必要的节点并为该组件设置 sling:superResourceType
属性 的值来手动创建自定义组件将继承 /libs/
组件的所有功能,即使升级后您仍然继承图像组件的特性。
这里我们可以对任何你想继承功能的组件使用sling:superResourceType
(例如从projectA组件到ProjectB等,不仅限于库)。
由于引入了新的 Granite Touch UI,从 AEM 6.0 版本开始,叠加层的使用有所不同,请查看 Adobe Documentation
Sling 资源合并:
查看 Sling Resource Merger 以了解资源合并包的概念。它是一个 Sling 框架包 (org.apache.sling.resourcemerger),让您可以灵活地合并多个其他资源的视图。确切的合并机制取决于资源选择器的实现(即覆盖或覆盖)。
通过这个Sling Resource Merger可以
- 从基础资源中删除现有的resource/properties,
- 修改底层资源的现有properties/child资源和
- 添加新的 properties/child 资源
资源合并提供以下属性实现上述
sling:hideProperties (String or String[]) -- 将 属性 或属性列表指定为 hide.The 通配符 * 隐藏所有。
sling:hideResource (Boolean) -- 表示是否应该完全隐藏资源,包括它的children.
sling:hideChildren (String or String[]) -- 包含 child 节点,或 child 节点列表, 隐藏。节点的属性将被保留。
通配符 * 隐藏所有。
sling:orderBefore (String) -- 包含当前节点应该位于其前面的兄弟节点的名称。
AEM 默认安装您将获得此捆绑包,同样可以从您的 Felix 控制台使用捆绑包符号名称 org.apache.sling.resourcemerger
进行验证
在 AEM 中使用 Sling 资源合并的目标是:
- 确保不在 /libs 中进行自定义更改。
- 减少从 /libs 复制的结构。
Let’s go to an AEM example to implement or utilize it
目前我要覆盖 /libs/
下的工具相关节点 jcr:title
值到 /apps
现在更新 jcr:title
属性 单独在 /apps/..
下的覆盖组件节点 属性 上
像这样,您可以覆盖库中的任何组件,并将所需的功能更改更新到该特定节点
Let's see one more example usage of sling Resource Merger property
如上所示,我还覆盖了站点节点以及 jcr:title
属性 我添加了 sling:hideProperties
,如下所示。
现在看看触摸 UI 页面导航中站点标题的输出。
您也可以用类似的方式玩其他属性。 Hope it helps.
我正在尝试了解 AEM Sling 资源合并概念。根据 Adobe 文档示例 Override (Configuring your Page Properties), Overlay (Customizing the Consoles (touch-optimized UI)) 我对如何使用它感到困惑,任何人都可以用简单的组件解释以更好地理解它。
给你一个解释
覆盖:
当您在 AEM 中覆盖组件时,意味着将组件从 /libs/
文件夹复制到 /apps/..
文件夹。您可以在 /apps/..
根据默认的 OSGI 首选项,AEM 使用搜索路径查找资源,首先搜索 /apps/
分支,然后搜索 /libs
分支,以便您新复制的组件位于 /apps/
下优先于 /libs/
.
请注意,我们可以修改搜索路径及其优先顺序,方法是从 Felix console Apache Sling Resource Resolver Factory 配置。
您可以尝试叠加这些 libs/foundation/components/
列表、图像、文本和图像、旋转木马等。可以玩转和更改对话框的简单组件,jsp 级别功能并查看行为。
当你覆盖一个组件时,请记住,这两个组件都可以显示在作者的助手中,对于你的覆盖 /apps/..
组件,如果标题、componentGroups 与 /libs/..
组件相同,在 parsys 的设计模式下启用组件可以通过组件周围的括号 (foundation) vs (your project)
来区分它们。
覆盖:
您还可以通过使用 sling:resourceSuperType
属性.
通过创建所有必要的节点并为该组件设置 sling:superResourceType
属性 的值来手动创建自定义组件将继承 /libs/
组件的所有功能,即使升级后您仍然继承图像组件的特性。
这里我们可以对任何你想继承功能的组件使用sling:superResourceType
(例如从projectA组件到ProjectB等,不仅限于库)。
由于引入了新的 Granite Touch UI,从 AEM 6.0 版本开始,叠加层的使用有所不同,请查看 Adobe Documentation
Sling 资源合并: 查看 Sling Resource Merger 以了解资源合并包的概念。它是一个 Sling 框架包 (org.apache.sling.resourcemerger),让您可以灵活地合并多个其他资源的视图。确切的合并机制取决于资源选择器的实现(即覆盖或覆盖)。
通过这个Sling Resource Merger可以
- 从基础资源中删除现有的resource/properties,
- 修改底层资源的现有properties/child资源和
- 添加新的 properties/child 资源
资源合并提供以下属性实现上述
sling:hideProperties (String or String[]) -- 将 属性 或属性列表指定为 hide.The 通配符 * 隐藏所有。
sling:hideResource (Boolean) -- 表示是否应该完全隐藏资源,包括它的children.
sling:hideChildren (String or String[]) -- 包含 child 节点,或 child 节点列表, 隐藏。节点的属性将被保留。 通配符 * 隐藏所有。
sling:orderBefore (String) -- 包含当前节点应该位于其前面的兄弟节点的名称。
AEM 默认安装您将获得此捆绑包,同样可以从您的 Felix 控制台使用捆绑包符号名称 org.apache.sling.resourcemerger
进行验证在 AEM 中使用 Sling 资源合并的目标是:
- 确保不在 /libs 中进行自定义更改。
- 减少从 /libs 复制的结构。
Let’s go to an AEM example to implement or utilize it
目前我要覆盖 /libs/
下的工具相关节点 jcr:title
值到 /apps
现在更新 jcr:title
属性 单独在 /apps/..
下的覆盖组件节点 属性 上
像这样,您可以覆盖库中的任何组件,并将所需的功能更改更新到该特定节点
Let's see one more example usage of sling Resource Merger property
如上所示,我还覆盖了站点节点以及 jcr:title
属性 我添加了 sling:hideProperties
,如下所示。
现在看看触摸 UI 页面导航中站点标题的输出。
您也可以用类似的方式玩其他属性。 Hope it helps.