Adobe CQ5全球组件

时间:2013-08-02 12:47:50

标签: adobe cq5

一些背景知识:我正在尝试在左侧为响应式网站创建一个滑动导航组件。我想在菜单中的所有项目旁边添加一个使用design_dialog配置的图像。

我正在运行CQ 5.6.1

我遇到的问题是,我目前有“主页”,“内容页面”和“联系页面”模板。所有3个都使用它们的命名组件进行渲染,这些组件来自基本的“页面”组件。

在这个页面组件中,我有一个包含我的navpanel组件的body.jsp。一切正常,但是当在主页上设置导航面板中的图像时,它们不会显示在另外两个上。

我知道这是因为导航面板设计路径是:/etc/designs/testsite/jcr:content/homepage/navpanel

body.jsp中,当包含navpanel时,我尝试将cq:include中的路径变量设置为绝对路径(即/etc/designs/testsite/jcr:content/navpanel),因为根据API,它应该采用绝对路径而不是完全修改它。相反,在输出currentStyle.getPath()时,它会继续显示第一条路径(包括主页)。

为了实现我的目标,我需要能够将此组件的设计路径配置为“全局”级别,而不是嵌套在模板设计中。

是否有以编程方式更改此值?是否听起来cq:include path的错误表现不符合预期?

2 个答案:

答案 0 :(得分:0)

cq:include不是作为一个组件加载到设计路径中(听起来就像你想要做的那样)。

cq:include包含一个静态脚本(使用脚本属性) 例如:

或组件(使用path和resourceType属性) 例如:

currentStyle仍然会为当前模板的designPath获取此组件的样式。

您将在geometrixx演示站点上注意到相同的事情,例如当您将徽标(设计模式)切换为其他内容时,然后转到另一个模板。旧徽标仍将使用其他模板在页面上。这就是为什么建议在设计模式下尽可能少地做,除非您打算将您的操作限制在您处于设计模式的模板中。例如,限制可以在特定模板上使用的组件是一种很好的设计模式。

制作一个使用相同数据作为源的“全局”组件并不是那么简单。在您的情况下,您可以尝试通过将图像保存/加载到存储库中的公共位置来解决此问题。也许你甚至可以实现一项服务来使这个“共同位置”可配置。或者你可以更进一步,并加载服务/保存图像。

答案 1 :(得分:0)

有点晚了,但想分享我们如何制作一个全局组件(authorable组件)。

使用绝对路径根本不起作用(好吧,差不多)。对于共享全局组件的多个页面,我们以这种方式处理路径属性:

我们说我们共有10个页面共享一个菜单组件:

  1. 使所有这些都从默认页面组件扩展。
  2. 只创建一个页面(称之为myapp / components / pages / A)以扩展页面并具有指向要包含的共享组件的相对路径(即:<cq:include path="mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />)。
  3. 使剩余页面扩展页面并使用共享组件的绝对路径(即:<cq:include path="/myapp/A/jcr:content/mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />)。
  4. 这种方法可以用于在多个模板页面之间共享CQ下的全局组件,并且还支持拖动和放大。在编辑模式下工作时删除功能:将任何子项拖到共享组件中,并在所有页面上使用该组件。