如何在AEM 6.2中继承页面属性?
在我们的AEM 6.2项目中,我运行了一个场景,在这个场景中,我需要在一个页面中配置导航(让我们调用这个主页),所有其他页面都可以使用home navigation config或使用它们自己的导航配置值 我决定使用live copy,因为克隆页面可以随时取消链接属性并使用它们自己的值。但这种方法有两个问题:如何在AEM 6.2中继承页面属性?,aem,Aem,在我们的AEM 6.2项目中,我运行了一个场景,在这个场景中,我需要在一个页面中配置导航(让我们调用这个主页),所有其他页面都可以使用home navigation config或使用它们自己的导航配置值 我决定使用live copy,因为克隆页面可以随时取消链接属性并使用它们自己的值。但这种方法有两个问题: 用户必须通过编辑其jcr:content/sling:resourceType和jcr:content/cq:template来设置克隆页面的模板,因为导航用于所有页面,我们的网站使用大约
Home
|_ Page 1
|_ Page 1.1
|_ Page 2
|_ Page 3
${inheritedPageProperties}
,这解决了模板和结构问题,但带来了两个新问题:
${inheritedPageProperties}
设置和调用)${inheritedPageProperties}
搜索上层节点以获取值)- 所有页面只能从主页或其自己的页面使用导航设置(默认情况下使用主页)
- 如果使用主页属性,这些值必须显示在配置对话框中
- 尽量避免在CRXDE Lite中使用配置模板
- 网站必须具有父子结构
我怎样才能达到这些要求?您可以通过一个简单的吊索来实现这一点 CompositeValueMap文档状态: 基于两个ValueMap的ValueMap实现:-一个包含属性-另一个包含属性映射不包含值时使用的默认值。如果希望避免在多个资源上重复属性,可以使用CompositeValueMap来获取属性的串联映射 我们可以通过提供子代的值映射(当前页面的值映射),然后找到正确的祖先并提供其属性值映射作为默认值来使用它 出于这个问题的目的,我总是假设根的2rd后代始终是祖先(您可以根据您的要求找到您的祖先) 现在您可以按如下方式使用它
<sly data-sly-use.propHelper="com.sample.helpers.CustomInheritedPageProperties">>/sly>
<!--/* someProp here refers to the property you wish to get (inherited, of course)*/-->
<h1>propHelper.inheritedProperties.someProp</h1>
>/sly>
propHelper.inheritedProperties.someProp
那么您要查找的继承只在子体和根(第1页)之间,而不是整个树之间?例如,如果您有P1->P1.1->P1.1.1
,您希望P1.1.1仅从P1继承,并在P1.1.1设置了它的on值时覆盖它?是的,这就是我要查找的。
<sly data-sly-use.propHelper="com.sample.helpers.CustomInheritedPageProperties">>/sly>
<!--/* someProp here refers to the property you wish to get (inherited, of course)*/-->
<h1>propHelper.inheritedProperties.someProp</h1>