gpt4 book ai didi

Adobe CQ 组件限制子组件

转载 作者:行者123 更新时间:2023-12-04 16:11:01 27 4
gpt4 key购买 nike

我正在尝试为简单的 Accordion 创建一个组件,其中内容块保存在标题下,并且一次只能看到一个标题。我的首选实现使用两个组件,一个代表整个 Accordion ,第二个组件代表单个条目。

这个想法是内容作者可以从助手拉入 Accordion ,然后将一个或多个 Accordion 项目放入 Accordion 中,但不允许将任何其他组件放在此处。 Accordion 项目应该只能放入 Accordion 组件中,而不能放入任何其他 parsys 中。

我的问题是,目前可以在 Accordion 中添加其他内容并在 Accordion 之外添加 Accordion 项目。

解决这个问题的第一次尝试是:

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

这些是来自这里的配置文件是:

Accordion /.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"/>

Accordion /_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>

该对话框是空白的并且仅存在以便组件将出现在 sidekick 中。

Accordion .jsp 只包含基础 parsys。

Accordion /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"/>

Accordion 项目对话框包含标题。 editConfig 只是添加了工具栏,但没有监听器。

Accordion 项.jsp 输出从对话框中获取的标题并具有解析系统。

我的问题似乎是 parsys 没有使用 Accordion 和 Accordion 组件的规则。相反,除非被覆盖,否则它们似乎是从下一个解析系统继承的。

我可以通过在页面上使用编辑模式并选择适当的组件来正确设置组件,但这会根据模板设置信息,这意味着我需要对每个页面模板执行相同的配置。我想要的是在组件定义中定义它,以便它存在一次。

在第一次编写组件后,我发现了这个博客,它描述了完全相同的场景: http://jenikya.com/blog/2012/03/cq5-accordion-component.html

使用它作为我的引用,我尝试添加 parsys 的扩展以在 Accordion .jsp 中使用。这对代码没有影响,所以即使我的自定义 parsys 也允许添加 Accordion 项目以外的组件。

任何关于错误或其他方法的指导将不胜感激。

最佳答案

这里的解决方案是使用 parsys 并构建一个复合组件以将 Accordion 内容限制为仅一组组件(如博客条目中所述)。

看看http://localhost:4502/content/geometrixx/en/company/press/asseteditor.html它也将这种技术用于 dam/components/asseteditor/thumbnail成分。

关于Adobe CQ 组件限制子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com