http://helpx.adobe.com/experience-manager/kb/HowToDefineComponentListDynamically.html
我试过上面但由于文章不完整,我失败了。页面加载时到底发生了什么?
哪个js调用哪个js?
如何覆盖ComponentList.js的'update'功能?
如何调用它?
如何调用它?我尝试过使用听众而失败了(由于第一次听众而感到失望?)
答案 0 :(得分:1)
每个客户端组件也获得一个小区搜索路径,并最终分配CQ.wcm.Cell>。 允许的组件数组保存在CQ.wcm.ComponentList类中,每个类都有一个实例。
插入对话框和sidekick从该对象获取组件的最终列表。
" updatecomponentlist"可以使用容器组件
上的普通editConfig侦听器注册侦听器
根据文档sidekick从设计路径中读取组件列表并在客户端修改它,您必须在容器组件的编辑配置中添加updatecomponentlist
事件侦听器。
我无法告诉你内幕,但我可以告诉你操作SideKick中的组件列表。
在节点内部:cq:listeners添加一个属性 updatecomponentlistener ,其值应该是此处提供的函数
function MyHandler(cell, allowed, componentList) {
// manipulate the 'allowed' array if needed
if(allowed instanceof Array)
allowed.push('your component group');
}
这里唯一的问题是,如果allowed
参数是一个字符串,它就无法工作。当您在该页面的设计路径中允许单个组件或单个组时,就会发生这种情况。因此,为了使其始终有效,在您的设计路径中将允许的组件列表保持为空并更改运行时中允许的组件。
另外,根据文档,这是不正确支持的
请注意"运行时"目前不支持对组件列表的操作。 >即。如果允许的组件列表取决于客户端更改,则无法将其传播到对话框。
这意味着在设计对话框中,不会向作者显示您在运行时允许的组件。
所以我建议你咨询一个合适的CQ开发人员,或者在官方CQ论坛或Adobe论坛上询问是否推荐这个用例。