为cq5组件添加动态路径域(rootPath)

时间:2013-09-26 13:17:35

标签: cq5 aem

我们如何为cq5组件添加动态路径域(rootPath)?

是否有任何示例参考?

2 个答案:

答案 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/