Aem 我们如何在CQ5中定义全局属性

Aem 我们如何在CQ5中定义全局属性,aem,Aem,我的要求是有一个全局页眉和页脚,具有可编写的属性。 因此,如果我们在一个页面上更新属性,它应该反映在所有页面上 在CQ5中实现这一点的最佳方法是什么 传统上,您可以创建组件并将对话框交换为设计对话框。基本上,您可以将组件对话框重命名为design_dialog 这样做的目的是将对此对象所做的更改保存到“等”下的设计路径中。您可以通过转到顶级父级并设置“设计路径”属性来设置站点的设计路径 所以节点结构可能看起来像 父节点 -@prop designPath=“设计/myapplication” 儿

我的要求是有一个全局页眉和页脚,具有可编写的属性。 因此,如果我们在一个页面上更新属性,它应该反映在所有页面上


在CQ5中实现这一点的最佳方法是什么

传统上,您可以创建组件并将对话框交换为设计对话框。基本上,您可以将组件对话框重命名为design_dialog

这样做的目的是将对此对象所做的更改保存到“等”下的设计路径中。您可以通过转到顶级父级并设置“设计路径”属性来设置站点的设计路径

所以节点结构可能看起来像

父节点 -@prop designPath=“设计/myapplication” 儿童节1 儿童节2 等等

在parentNode或其子节点上使用design_对话框的任何组件都将从designPath获取其信息。如果未设置设计路径,则信息会保存在etc/designs/default下(或者默认值,不确定,会从我的头顶消失)

除此之外,还有一些替代方案:

我们的团队所做的是使用siteHeader组件(inheritancevalue map),而不是常规的值映射。继承的值映射将遍历树,从其父级查找项。这是学习如何使用valuemap而不仅仅是默认属性对象的一个很好的来源:

对于较大的站点,这确实会变得复杂,您必须进行大量自定义以使系统按您想要的方式工作,但如果您不想为作者创建的每个新站点手动设置设计路径,这是一个选项

或者,如果您确实喜欢使用designPath和design_对话框,则可以始终挂接到页面创建工作流中,并让页面组件在创建时添加designPath属性(这说起来容易做起来难)


希望这对您有所帮助

如果您的所有页面都位于一个层次结构下,您可以使用继承的段落系统(
iparsys
)。这是文档的一部分,但仍然是一个很好的介绍:

继承的段落系统是一个段落系统,它还允许 您可以从父对象继承创建的段落。你加上 例如,
/content/geometricxx/en/products
因此,所有也有iparsys的产品子页面 使用相同的名称从父级继承创建的段落。在…上 在每个级别中,您可以添加更多段落,然后由 儿童版。您还可以取消段落继承 在任何时候都保持水平


虽然与您在原始帖子中所描述的不完全一样(在任何地方编辑),但它将允许您编辑内容一次(在父页面),并在任何地方继承更改。

ACS AEM Commons现在支持此功能,而无需使用iparsys-共享组件属性()

使用共享和/或全局属性配置菜单,只需将其直接模板化到所有页面上即可(无需iparsys)。然后,您可以从站点上的任何页面编辑页眉/页脚,并且它将在所有页面上更新


与使用设计对话框不同,共享组件属性支持标准内容激活和国际化(值存储在主页下方)以及您希望从内容中获得的任何其他内容。

我们已使用design dialog实现,但我们有多个模板,其中包括常见的页眉和页脚组件。现在design dialog在etc/design中为每个模板创建节点并保存属性。因此,如果需要更新页眉属性,我们必须转到每个模板页面并进行更改。当您包含页眉/页脚组件时,您是否尝试过这样做?这与inheritancevalue映射过程非常相似,我支持@anotherdave关于查看iparsys的建议。我们的团队决定创建自己的Inherance而不是使用iparsys的唯一原因是因为iparsys没有提供一些定制需求。但开箱即用,这是一个很好的解决方案,或者是在你决定时的临时解决方案。