供参考,我在CQ5.5
我很好奇是否有任何方法可以扩展继承的对话框,而不会覆盖它的父对话框。
例如,具有如下结构:
base-page-template
- dialog
- title
- description
inerited-from-base-page
- dialog
- custom field
--------------- [inherited from parent]
- title
- description
我要避免的是例如:我需要向基页添加一个新属性,该属性应显示在从基页扩展的所有页面模板上。我目前的解决方案是将该属性分别添加到所有对话框。因此,例如,在上面的结构中,我将不得不在基页和从基页继承的对话框中添加新的“默认属性”。
我能想到的唯一另一个选择是创建一个代表“基页”的面板节点,然后包含带有xtype:cqinclude节点的面板。
在采用后一种方式之前,我很好奇是否有人以我上面描述的方式扩展了对话框。
非常感谢任何帮助,谢谢, 布罗迪
答案 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隐藏和命令对话框中的属性。