我们如何为cq5组件添加动态路径域(rootPath)?
是否有任何示例参考?
答案 0 :(得分:10)
我认为你应该使用自定义小部件插件。首先,将属性plugins
添加到pathfield
中的dialog.xml
:
<myPathComponent
jcr:primaryType="cq:Widget"
fieldLabel="My path component"
plugins="customRootPathPlugin"
xtype="pathfield" />
然后创建自定义ExtJS插件。为此,请创建新的JS文件,并将其添加到cq.wcm.edit
类别的clientlib。插件看起来像这样:
(function($) {
var plugin = CQ.Ext.extend(CQ.Ext.emptyFn, {
init: function(widget) {
var locale = "en";
// create some JS logic to get the locale here
// current path can be obtained via
// widget.findParentByType('dialog').responseScope.path
widget.treeRoot.name = "content/myproject/" + locale + "/mycomponent";
}
});
CQ.Ext.ComponentMgr.registerPlugin('customRootPathPlugin', plugin);
}($CQ));
答案 1 :(得分:1)
为了扩展Tomek的答案,我能够获得当前页面,然后显示所有兄弟姐妹和孩子:
(function($) {
var plugin = CQ.Ext.extend(CQ.Ext.emptyFn, {
init : function(widget) {
var url = CQ.HTTP.getPath();
widget.treeRoot.name = url.substring(1, url.lastIndexOf('/') );
}
});
CQ.Ext.ComponentMgr.registerPlugin('customRootPathPlugin', plugin);}($CQ));
我执行url.substring(1
而不是url.substring(0
的原因是因为我最终会在对话框中使用双正斜杠//content/app/en/
。