正在尝试向CKEditor添加插件

正在尝试向CKEditor添加插件,ckeditor,apostrophe-cms,Ckeditor,Apostrophe Cms,我正在尝试添加一个插件,以便在添加链接时设置默认URL 我按照这里的指示: 我最终得到了: // lib/modules/apostrophe-areas/public/js/user.js apos.define('apostrophe-areas', { construct: function(self, options) { var superEnableCkeditor = self.enableCkeditor; self.enableCkeditor =

我正在尝试添加一个插件,以便在添加链接时设置默认URL

我按照这里的指示:

我最终得到了:

// lib/modules/apostrophe-areas/public/js/user.js
apos.define('apostrophe-areas', {
    construct: function(self, options) {

    var superEnableCkeditor = self.enableCkeditor;

    self.enableCkeditor = function() {
    superEnableCkeditor();

    CKEDITOR.plugins.addExternal('defaulturl', '/modules/my-apostrophe-areas/js/ckeditorPlugins/defaulturl/', 'plugin.js');
  };
 }
});
这是我的撇号areas/public/js/ckeditorPlugins/defaulturl/plugin.js

CKEDITOR.on( 'dialogDefinition', function( ev ) {

    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;

    if ( dialogName == 'link' ) {

        var infoTab = dialogDefinition.getContents( 'info' );
        var urlField = infoTab.get( 'url' );

        urlField[ 'default' ] = 'www.example.com';
    }
});
但是,这对我不起作用,我尝试了这里建议的方法:

但它不起作用

我所尝试和工作的是将plugin.js文件附加到撇号区域文件夹中分割插件的plugin.js末尾,但我认为这不是正确的方法


谢谢

我认为你可以通过两种方式解决这个问题:

1.如果要保留外部插件文件: 根据API包装您的代码,请参见示例及其引用的插件。您需要在plugin.js中使用
CKEDITOR.plugins.add('defaulturl',{init:…})
。不确定在修改CKEDITOR核心插件的行为时是否需要执行其他特殊操作。这就是为什么它会与下一个选项

2.如果您不需要额外的
plugin.js
: 您还可以用
plugin.js
文件的内容替换
CKEDITOR.plugins.addExternal()
调用。我这样做是为了将默认链接目标修改为
\u blank

///lib/modules/撇号区域/public/js/user.js
"严格使用",;
//看https://apostrophecms.org/docs/tutorials/howtos/ckeditor.html 和
apos.定义(‘撇号区域’{
构造:函数(自身、选项){
var superEnableCkeditor=self.enablecketditor;
self.enablecketditor=函数enablecketditor(){
superEnableCkeditor();
// https://docs.ckeditor.com/ckeditor4/latest/guide/dev_howtos_dialog_windows.html
CKEDITOR.on('dialogDefinition',函数重定义对话框(ev){
var dialogName=ev.data.name;
var dialogDefinition=ev.data.definition;
如果(dialogName==='link'){
var targetTab=dialogDefinition.getContents('target');
var targetField=targetTab.get('linkTargetType');
targetField.default='_blank';
}
});
};
}
});

祝你好运

多谢各位!我可以用第二种方法解决它,我想我有点搞混了,因为我是新来的编辑