CQ5:继承/扩展对话框

时间:2014-01-22 20:57:47

标签: cq5

供参考,我在CQ5.5

我很好奇是否有任何方法可以扩展继承的对话框,而不会覆盖它的父对话框。

例如,具有如下结构:

base-page-template
   - dialog
      - title
      - description

inerited-from-base-page
   - dialog
      - custom field
      --------------- [inherited from parent]
      - title
      - description

我要避免的是例如:我需要向基页添加一个新属性,该属性应显示在从基页扩展的所有页面模板上。我目前的解决方案是将该属性分别添加到所有对话框。因此,例如,在上面的结构中,我将不得不在基页和从基页继承的对话框中添加新的“默认属性”。

我能想到的唯一另一个选择是创建一个代表“基页”的面板节点,然后包含带有xtype:cqinclude节点的面板。

在采用后一种方式之前,我很好奇是否有人以我上面描述的方式扩展了对话框。

非常感谢任何帮助,谢谢, 布罗迪

2 个答案:

答案 0 :(得分:11)

不,没有办法直接继承对话框。您可以做的最好的事情是使用路径属性包含对话框选项卡。

您应该在不同的位置创建标签,并使用路径属性将其包含在对话框中,如下所示:

<items jcr:primaryType="cq:WidgetCollection">
        <tabs jcr:primaryType="cq:TabPanel">
            <items jcr:primaryType="cq:WidgetCollection">
                <tab1
                        jcr:primaryType="cq:Widget"
                        path="/apps/myproject/tab1.infinity.json"
                        xtype="cqinclude"/>
                <tab2
                        jcr:primaryType="cq:Widget"
                        path="/apps/myproject/tab2.infinity.json"
                        xtype="cqinclude"/>

            </items>
        </tabs>
</items>    

其中tab1和tab2是标签面板。

所以,在你的情况下,它将是这样的:

base_page_dialog_tab
      - dialog
      - title
      - description

inherited page-dialog-tab
      - custom field


base-page-template
    - include base page dialog tab here.   

inerited-from-base-page
    - include Tab 1 - inherited page-dialog tab using path property 
    - include Tab 2 - base page dialog tab using path property.

答案 1 :(得分:2)

Rajesh提供的上述答案对于为AEM中的经典UI界面编写的dialog.xml是正确的。

相当于cqinclude的触摸UI是吊索:resourceType =“granite / ui / components / foundation / include”。 例如:

<basic
     jcr:primaryType="nt:unstructured"
     sling:resourceType="granite/ui/components/foundation/include"
     path="foundation/components/page/cq:dialog/content/items/tabs/items/basic"/>

使用AEM中的触摸UI,可以使用sling:resourceSuperType属性进行不同类型的对话框继承,但请注意,这不会从其实时复制父级继承对话框属性。该对话框继承自其sling资源超类型。

据我所知,此功能不是上述问题的解决方案,只是想指出使用新的TOUCH-UI创作可以实现对话继承。

以下是一个例子。

base_page_dialog_tab (sling:resourceType='A')
      - dialog
      - title
      - description

page-dialog-tab (sling:resourceSuperType=sling:resourceSuperType='A')
      - custom field

在上面的示例中,页面对话框选项卡在其对话框中将具有以下四个属性。

- dialog
- title
- description
- custom field

一些有用的配置选项,如sling:hideProperties,sling:hideResource,sling:hideChildren和sling:orderBefore隐藏和命令对话框中的属性。