【发布时间】:2014-01-10 19:45:58
【问题描述】:
我的要求是拥有一个具有可创作属性的全局页眉和页脚。 因此,如果我们更新一个页面上的属性,它应该会反映在所有页面中。
在 CQ5 中实现这一目标的最佳方法是什么。
【问题讨论】:
标签: aem
我的要求是拥有一个具有可创作属性的全局页眉和页脚。 因此,如果我们更新一个页面上的属性,它应该会反映在所有页面中。
在 CQ5 中实现这一目标的最佳方法是什么。
【问题讨论】:
标签: aem
ACS AEM Commons 现在无需使用 iparsys 即可支持此功能 - 共享组件属性 (http://adobe-consulting-services.github.io/acs-aem-commons/features/shared-component-properties.html)
使用共享和/或全局属性配置您的菜单,您可以简单地将其直接模板化到您的所有页面上(无需 iparsys)。然后,您可以从网站上的任何页面编辑页眉/页脚,它将在所有页面上更新。
与使用设计对话框不同,共享组件属性支持标准内容激活和国际化(存储在主页下方的值)以及您对内容的期望。
【讨论】:
如果您的所有页面都在一个层次结构下,您可以使用继承的段落系统 (iparsys)。这是来自文档的an old version,但仍然是一个很好的介绍:
继承的段落系统是一个段落系统,它也允许 您从父级继承创建的段落。你加 到 iparsys 的段落,例如
/content/geometrixx/en/products因此,所有也有 iparsys 的产品的子页面 具有相同名称的从父级继承创建的段落。在 每个级别,您可以添加更多段落,然后由 子页面。您还可以取消段落继承 随时升级。
虽然与您在原始帖子中描述的不太一样(在任何地方编辑),但它允许您编辑内容一次(在父页面上)并在任何地方继承更改。
【讨论】:
传统上,您可以创建组件并将对话框换成设计对话框。基本上,您会将组件对话框重命名为 design_dialog。
这会将您对此对象所做的更改保存到等下的设计路径中。您可以通过转到顶级父级并设置 designPath 属性来设置站点的设计路径。
所以节点结构可能看起来像
父节点 - @prop designPath = "设计/我的应用程序" 子节点1 子节点2 等等……
在 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 而不仅仅是默认属性对象的一个很好的来源:
对于较大的站点,这确实会变得复杂,您必须进行大量自定义才能使系统按您想要的方式运行,但如果您不想为每个站点手动设置 designPaths,这是一个选项您的作者创建的新网站。
或者,如果您确实喜欢使用 designPaths 和 design_dialogs 的想法,您可以随时加入页面创建工作流程,并让页面组件在创建时添加 designPath 属性(尽管说起来容易做起来难)。
希望对你有帮助
【讨论】: