我正在尝试为简单的手风琴创建一个组件,其中内容块位于标题下,一次只能显示一个标题。我的首选实现使用两个组件,一个用于表示整个手风琴,另一个用于单个条目。Adobe CQ Components限制儿童组件
这个想法是,内容作者可以从sidekick中拉出手风琴,然后将一个或多个手风琴项目放入手风琴中,但不允许在此处放置任何其他组件。手风琴项目应该只能放入手风琴组件中,而不能放在其他任何分析仪中。
我的问题是,目前可以将其他内容添加到手风琴中并在手风琴之外添加手风琴项目。
要解决的第一次尝试,这是:
foobar/components/accordion
foobar/components/accordion/accordion.jsp
foobar/components/accordion/cq:editConfig
foobar/components/accordion/dialog
foobar/components/accordion/accordionitem
foobar/components/accordion/accordionitem/accordionitem.jsp
foobar/components/accordion/accordionitem/cq:editConfig
foobar/components/accordion/accordionitem/dialog
这些都是从这个配置文件:
手风琴/ .content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:isContainer="{Boolean}true"
jcr:primaryType="cq:Component"
jcr:title="Accordion"
sling:resourceSuperType="foundation/components/parbase"
allowedChildren="[*/accordion/accordionitem]"
allowedParents="[*/parsys]"
componentGroup="General"/>
手风琴/ _cq_editConfig.xml
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
cq:actions="[-,edit,-,delete]"
cq:layout="editbar"
jcr:primaryType="cq:EditConfig">
<cq:listeners
jcr:primaryType="cq:EditListenersConfig"
aftercopy="REFRESH_PAGE"
afterdelete="REFRESH_PAGE"
afterinsert="REFRESH_PAGE"/>
</jcr:root>
该对话框是空白的,只存在于组件将出现在伙伴中。
accordion.jsp只包含基础解析。
手风琴/ accordionitem/.content.xml
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Component"
jcr:title="Accordion Item"
sling:resourceSuperType="foundation/components/parbase"
allowedParents="[*/accordion]"
componentGroup="General"/>
手风琴项目对话框需要的称号。 editConfig只是添加工具栏,但没有监听器。
accordionitem.jsp输出从对话框中取得的标题,并具有解析。
我的问题似乎是parsys没有使用手风琴和accordionitem组件的规则。相反,他们似乎从下一个解析继承,而不是覆盖。
我可以在页面上使用编辑模式,然后选择相应的组件设置正确的成分,但是,设置对模板的信息,这意味着我需要执行相同的配置为每个页面模板。我想要的是让它在组件定义中定义,以便它存在一次。
先写我发现这个博客,描述如出一辙之情况组件后:http://jenikya.com/blog/2012/03/cq5-accordion-component.html
使用,作为我参考,我尝试添加parsys的延伸,而不是accordion.jsp内使用。这对代码没有任何影响,所以即使我的自定义parsys也允许添加手风琴项目以外的组件。
任何指导,在任什么是采取将不胜感激错误或其他方法。
您是否可以详细了解如何在获取组件后来自您的多字段的值? –