AEM / CQ5如何共享组件值?

时间:2013-08-21 07:07:53

标签: cq5 aem

我希望有一个跨多个页面呈现组件共享的标头组件。标题组件具有文本标签。如何使此文本标签的值可用于所有页面组件。

我是否必须将<cq:include>中的路径设为通用格式?

6 个答案:

答案 0 :(得分:4)

设计模式,如果理解得当,可以很好地运作。但是,它不会以与页面激活相同的方式复制内容,因此可能会使您的作者感到困惑。此外,共享模型仅限于确切的页面类型 - 可能是您想要的粒度,也可能不是。

从CQ5的最佳实践(https://dev.day.com/docs/en/cq/current/developing/developing_guidelines_bestpractices.html),他们强烈鼓励段落系统(iparsys继承/共享)。名称相同的iparsys可以在不同的页面模板之间共享(而设计模式仅适用于单个模板类型)。

答案 1 :(得分:3)

我可以通过在标头组件下创建类似于design dialoghttp://dev.day.com/docs/en/cq/5-6/developing/components.html#Dialogs)的dialog来存档。您将文本标签字段添加到design dialog。要输入字段的值,请将页面切换到design模式,然后单击组件顶部的Edit按钮。输入的值将可用于包含标题组件的所有页面 注意:design dialog将命名为design_dialog

答案 2 :(得分:3)

此功能现在在ACS AEM Commons中作为共享组件属性提供 - http://adobe-consulting-services.github.io/acs-aem-commons/features/shared-component-properties.html

支持标准内容激活和国际化(主页下方存储的值)以及您希望从内容中获得的任何其他内容。

答案 3 :(得分:0)

如果组件在模板(i,e页面呈现组件)中被烘焙,是的,您可以使<cq:include>路径属性指向存储数据的一些常见位置,并且所有页面都是无关的of,模板的类型可以获得配置的值。

答案 4 :(得分:0)

您可以创建标题组件,然后使用基本模板/页面中的<cq:include>将其包含在内。此基本模板/页面将由所有其他模板继承。这样,在基页中配置的标题可以通过不同的模板/页面组件获得。

答案 5 :(得分:0)

如果目标是“跨多个页面渲染组件”共享,则设计对话框仅在页面共享相同的渲染组件时才有用。 如果要在页面及其所有子页面中显示标题组件,则应使用iparsys。 如果您只想重用该标头组件的属性,则需要具有固定路径(cq:包含在页面组件中),然后您可以在其他页面呈现组件中引用所需的属性。我不建议采用这种方法,因为它打破了拥有组件的想法。一切都变得紧密耦合。

您还可以做的是在页面级别保存这些属性(某些顶级父页面),然后在子页面中使用InheritanceValueMap来读取这些属性。