想在 cq5 中构建一个嵌套的多域对话。
我的要求是用
标题
链接文本
链接路径
图片上传
在这个多字段中,我想将链接文本作为另一个多字段。
笔记:
.我能够将标题、链接文本、链接路径、图像上传创建为多字段,但无法将链接文本作为多字段内的另一个多字段。我是 cq5 dev 的新手,如果有任何其他方法,Kinldy 建议。
这将涉及自定义多字段 js 并通过扩展复合字段创建自定义 xtypes。嵌套自定义多字段的大部分部分与创建单个自定义多字段相同。
内部多字段将在 getValue 上返回一个逗号分隔的字符串,这必须与外部多字段的其他字段连接,并由分隔符分隔。内部多字段的设置值将需要一个字符串数组,为此您必须修改内部多字段的多字段js并覆盖设置值方法以获取逗号分隔的字符串并拆分为一个数组。
外部多字段也必须随着内部多字段内容的变化而更新。这可以通过在更新内部多字段后立即调用 update 方法来完成(可以通过 findParentBy 方法获得对外部多字段的引用)
最终结果将如下所示
字符串数组
[0] : a-outer-field1<#- >a-outer-field2<#- >a-1-inner-field1<#-#>a-1-inner-field2<#-#>,a-2 -innerfield1<#-#>a-2-innerfield2<#-#><#-*>
[1] : b-外场1<#- >b-外场2<#- >b-1-内场1<#-#>b-1-内场2<#-#>,b-2-内场1 <#-#>b-2-innerfield2<#-#><#-*>
查看此链接http://cq5tutorials.blogspot.com/2014/04/cq5-multifield-in-multifield.html
可以在以下位置找到如何实现 Chris Leggett 描述的自定义小部件的示例:
http://cq.shishank.info/2011/12/19/multifield-with-custom-xtype/
我如何存储该值的格式为:
[项目1|项目2]
使用一些逻辑,您可以提取链接文本和 url,但如果您使用这种格式,第三个值似乎会成为不好的做法,但存储此信息的方式将是相同的。也许您可以将信息存储为 JSON,但我个人还没有看到它的实现。
希望有帮助。
我相信做到这一点的唯一方法是编写自己的小部件。我已经完成了这项工作,但无法共享代码。如果您愿意,可以在https://github.com/Velir/AEM-Toolbox上查看我一直在努力构建的这个开源库。StucturedMultiList 小部件可能适合您的需要。