我的要求是拥有一个具有author作为属性的全局页眉和页脚。 因此,如果我们更新一个页面上的属性,它应该反映在所有页面上。
在CQ5中实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
如果您的所有网页都位于层次结构下,则可以使用继承的段落系统(iparsys
)。这来自文档的an old version,但仍然是一个很好的介绍:
继承的段落系统是一个也允许的段落系统 您要从父级继承创建的段落。你添加 iparsys的段落,例如,
/content/geometrixx/en/products
结果,所有产品的子页面也有iparsys 使用相同的名称从父级继承创建的段落。上 每个级别,您可以添加更多段落,然后继承 儿童页面。您还可以在a处取消段落继承 随时都有水平。
虽然不完全是您在原始帖子中描述的内容(在任何地方编辑),但它允许您编辑内容一次(在父页面上)并在任何地方继承更改。
答案 1 :(得分:2)
ACS AEM Commons现在支持此功能而不使用iparsys - 共享组件属性(http://adobe-consulting-services.github.io/acs-aem-commons/features/shared-component-properties.html)
使用共享和/或全局属性配置菜单,您只需将其直接模板到所有页面上(无需iparsys)。然后,您可以从网站上的任何页面编辑页眉/页脚,它将在所有页面上更新。
与使用设计对话框不同,共享组件属性支持标准内容激活和国际化(存储在主页下方的值)以及您希望从内容中获得的任何其他内容。
答案 2 :(得分:0)
传统上,您可以创建组件并将对话框交换出设计对话框。基本上,您将组件对话框重命名为design_dialog。
这样做是将对此对象所做的更改保存到等等下的设计路径。您可以通过转到顶级父级并设置designPath属性来设置站点的设计路径。
因此节点结构可能类似于
parentNode - @prop designPath =“designs / myapplication” childNode1 childNode2 等...
在parentNode或其子节点上使用design_dialog的任何组件都将从designPath获取其信息。如果您没有设置设计路径,那么信息会保存在etc / designs / default下(或者默认值,不确定,从我的头顶开始)。
有一些替代方案:
我们的团队所做的是在我们的siteHeader组件中,我们使用http://dev.day.com/docs/en/cq/current/javadoc/com/day/cq/commons/inherit/InheritanceValueMap.html(继承值映射)而不是常规值映射。继承的值映射将遍历树以查找其父项中的项。这是学习如何使用valuemap而不仅仅是默认属性对象的一个很好的资源:
对于较大的网站而言,这确实变得复杂,并且您必须进行大量自定义以使系统按您希望的方式工作,但如果您不想为每个人手动设置designPath,则可以选择您的作者创建的新网站。
或者,如果您喜欢使用designPaths和design_dialogs的想法,您可以始终挂钩页面创建工作流程并让页面组件在创建时添加一个designPath属性(这说起来容易做起来容易得多)。 / p>
希望有所帮助