我想要一个跨多个页面呈现组件共享的标题组件。标题组件有一个文本标签。如何使此文本标签的值可用于所有页面组件。
我是否必须以<cq:include>
通用格式制作路径?
如果理解得当,设计模式可以很好地工作。但是,它不会以与页面激活相同的方式复制内容,因此可能会让您的作者感到困惑。此外,共享模型仅限于确切的页面类型——这可能是也可能不是您想要的粒度。
来自 CQ5 的最佳实践(https://dev.day.com/docs/en/cq/current/developing/developing_guidelines_bestpractices.html),他们强烈鼓励段落系统(iparsys 继承/共享)。 iparsys
命名相同的页面模板可以在不同的页面模板之间共享(而设计模式仅适用于单一模板类型)。
我可以通过在标题组件下创建一个design dialog
类似于dialog
(http://dev.day.com/docs/en/cq/5-6/developing/components.html#Dialogs )的文件来归档它。您将文本标签字段添加到design dialog
. 要为该字段输入值,请将页面切换到该design
模式并单击Edit
组件顶部的按钮。输入的值将可用于包含标题组件的所有页面。
注意:design dialog
将被命名为 design_dialog
此功能现在在 ACS AEM Commons 中作为共享组件属性提供 - http://adobe-consulting-services.github.io/acs-aem-commons/features/shared-component-properties.html
支持标准内容激活和国际化(存储在主页下方的值)以及您对内容的期望。
您可以创建标题组件,然后将其包含<cq:include>
在基本模板/页面中。此基本模板/页面将被所有其他模板继承。这样,一旦在基本页面中配置的标题可以通过不同的模板/页面组件使用。
如果组件是在模板中烘焙的(即页面渲染组件),是的,您可以使<cq:include>
path 属性指向存储数据的某个公共位置,并且所有页面(无论模板的类型如何)都可以获取配置的值。
如果目标是“跨多个页面渲染组件”共享,则设计对话框只有在页面共享相同的渲染组件时才会有所帮助。如果你想让页眉组件显示在一个页面及其所有子页面中,那么你应该使用 iparsys。如果你只是想复用那个header组件的属性,那么它需要有一个固定的路径(页面组件中的cq:include),然后你可以在其他页面渲染组件中引用你需要的属性。我不会建议这种方法,因为它打破了拥有组件的想法。一切都变得紧密耦合。
您还可以在页面级别(某些顶级父页面)保存这些属性,然后在子页面中使用 InheritanceValueMap 来读取这些属性。