我正在尝试为Adobe CQ5中的不同模板添加不同的自定义页面属性。我试图覆盖apps / project-name / components中的默认页面组件,并在对话框中自定义页面属性;但它改变了所有页面的页面属性。有没有办法在页面属性对话框中为不同的模板获取不同的自定义页面属性?
答案 0 :(得分:0)
仅凭模板不足以拥有单独的页面属性。您需要使用不同的页面组件来定义对话框。如果使用继承(sling:resourceSuperType),您仍然可以拥有一个基本组件和完全相同的渲染JSP,并只覆盖对话框。
答案 1 :(得分:0)
嗯,有一种笨拙的方式
xtype cqinclude
可以提供帮助。它有一个path
属性,指向要包含的对话框资源(采用JSON格式)。该路径将通过Ajax请求。因此,您可以创建一个servlet,它根据引用者的模板以JSON格式返回对话框的元素。然后在基本模板的dialog.xml中使用它:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Dialog"
stateful="false"
xtype="dialog">
<items jcr:primaryType="cq:WidgetCollection">
<tabs jcr:primaryType="cq:TabPanel">
<items jcr:primaryType="cq:WidgetCollection">
<basic
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_basic.infinity.json"
xtype="cqinclude"/>
<advanced
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_advanced.infinity.json"
xtype="cqinclude"/>
<image
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_image.infinity.json"
xtype="cqinclude"/>
<cloudservices
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_cloudservices.infinity.json"
xtype="cqinclude"/>
<blueprint
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_blueprint.infinity.json"
xtype="cqinclude"/>
<livecopy
jcr:primaryType="cq:Widget"
path="/libs/foundation/components/page/tab_livecopy.infinity.json"
xtype="cqinclude"/>
<custom
jcr:primaryType="cq:Widget"
path="/services/MyServlet"
xtype="cqinclude"/>
</items>
</tabs>
</items>
</jcr:root>
但我建议你只有在别无选择的情况下才能使用它。