CQ.tagging.TagInputField
提供了两个不能组合使用的配置参数:
以OOTB facebook标签为例,我想限制对话框只显示收藏的团队。结构是这样的:
所以我将tagBasePath设置为/etc/tags/facebook
,将命名空间设置为[favorite_teams]
。这样做了它应该做的事情,只显示对话框中的两个团队。但是当您单击它时,会抛出JavaScript异常。问题在于/libs/cq/tagging/widgets/source/CQ.tagging.js
CQ.tagging.parseTag = function(tag, isPath) {
var tagInfo = {
namespace: null,
local: tag,
getTagID: function() {
return this.namespace + ":" + this.local;
}
};
// parse tag pattern: namespace:local
var colonPos = tag.indexOf(isPath ? '/' : ':');
if (colonPos > 0) {
// the first colon ":" delimits a namespace
// don't forget to trim the strings (in case of title paths)
tagInfo.namespace = tag.substring(0, colonPos).trim();
tagInfo.local = tag.substring(colonPos + 1).trim();
}
return tagInfo;
};
它不尊重窗口小部件上设置的配置,并返回命名空间为null的tagInfo。然后我在我的创作JavaScripts中重叠了该方法,但这当然不适用于SiteAdmin,因为我的自定义JS没有包含在内。
那么,我是否真的必须覆盖libs下面的CQ.tagging.js,或者我可以以某种方式将我的叠加层注入SiteAdmin,以便从那里打开的PageProperties Dialog也能正常工作?
更新:我与Adobe支持人员就此进行了聊天,并指出如果您使用tagsBasePath
,则需要将其放置在/etc/tags
以下的其他位置。但是这不会起作用,TagListServlet
将不会返回任何标记,因为/etc/tags
也会在{+ 1}}中固定在TagManager中。我现在在其位置覆盖上面提到的js,很清楚如果我们安装了修补程序或更新,我需要检查它。有人有一个更优雅的解决方案,我仍然感激不尽。