如何使用/了解AEM Sling Resource Merger,override和Overlay概念

时间:2017-01-17 03:41:43

标签: cq5 aem sling

我试图了解AEM吊索资源合并概念。根据Adobe文档示例Override (Configuring your Page Properties)Overlay (Customizing the Consoles (touch-optimized UI))对如何使用它感到困惑,任何人都可以用简单的组件来解释它以更好的方式理解它。

1 个答案:

答案 0 :(得分:16)

在这里你会有一个解释

<强>重叠: 在AEM中叠加组件意味着将组件从/libs/文件夹复制到/apps/..文件夹。您可以在/apps/..下的新复制组件上强加您自己的定义(如更改标题,组,业务逻辑功能)

根据默认的OSGI首选项,AEM使用搜索路径查找资源,首先搜索/apps/分支,然后搜索/libs分支,以便/apps/下新复制的组件获得优先权而不是/libs/

请注意,我们可以通过从Felix console Apache Sling资源解析器工厂 配置更改搜索路径及其优先级顺序来修改搜索路径及其优先级顺序。

您可以尝试覆盖这些libs/foundation/components/列表,图片,文字和图片,轮播等。简单的组件来玩和更改对话框,jsp级别的功能并查看行为。 当您覆盖组件时,请记住两个组件都可以显示在作者旁边,对于覆盖/apps/..组件,如果标题componentGroups与/libs/..组件相同,则在parsys的设计模式中启用组件可以使用组件(foundation) vs (your project)周围的括号区分它们。 Overlay

替换: 您还可以使用sling:resourceSuperType属性扩展/覆盖组件行为。

通过创建所有必需节点手动创建自定义组件并将sling:superResourceType属性的值设置到该组件将继承/libs/组件的所有功能,即使在升级后仍然继承了图像组件的功能

在这里,我们可以将sling:superResourceType用于您要继承功能的任何组件(例如,从projectA组件到ProjectB等,不仅限于libs)。 随着新的Granite Touch UI的推出,AEM 6.0版本之后的叠加层存在使用差异,请查看Adobe Documentation AEM6.0 Overlay

吊索资源合并: 请查看Sling Resource Merger以了解Resource Merger捆绑包概念。它是一个Sling框架包( org.apache.sling.resourcemerger ),它使您可以灵活地在多个其他资源上合并视图。确切的合并机制取决于资源选择器实现(即覆盖或覆盖)。

通过此Sling Resource Merger可以

  1. 从基础资源中删除现有资源/属性
  2. 修改基础资源的现有属性/子资源和
  3. 添加新属性/子资源
  4. 资源合并提供以下属性来实现上述

    1. sling:hideProperties(String or String []) - 指定要隐藏的属性或属性列表。通配符*隐藏所有属性。

    2. sling:hideResource(Boolean) - 指示是否应完全隐藏资源,包括其子资源。

    3. sling:hideChildren(String或String []) - 包含要隐藏的子节点或子节点列表。将维护节点的属性。 通配符*隐藏所有。

    4. sling:orderBefore(String) - 包含当前节点应位于前面的兄弟节点的名称。

    5. AEM默认安装,您可以使用捆绑符号名称 org.apache.sling.resourcemerger

      从您的Felix控制台验证此捆绑包的可用性

      在AEM中使用Sling Resource Merger的目标是:

      1. 确保不在/ libs中进行自定义更改。
      2. 减少从/ libs复制的结构。
      3.   

        让我们转到AEM示例来实现或利用它

        目前我将覆盖jcr:title/libs/下的工具相关节点/apps

        Tools title before overlay

        Overlay Tools

        Confirm Overlay

        现在,仅在jcr:title下的覆盖组件节点属性上更新/apps/..属性 Update Title Updated Tools title

        像这样,您可以覆盖lib中的任何组件,并将所需的功能更改更新到该特定节点

          

        让我们看一下sling Resource Merger属性的另一个示例用法

        如上所示,我已经覆盖了sites节点以及我添加了jcr:title的{​​{1}}属性,如下所示。 sites overlay

        现在查看触摸UI页面导航中网站标题的输出。

        hidden sites title

        类似的方式你也可以玩其他属性。的 Hope it helps