试图向CKEditor添加插件

时间:2018-05-03 17:10:20

标签: ckeditor apostrophe-cms

我正在尝试添加插件以在添加链接时设置默认网址。

我按照这里的说明操作: https://apostrophecms.org/docs/tutorials/howtos/ckeditor.html

我最终得到了:

// 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');
  };
 }
});

这是我的撇号区/ 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';
    }
});

但是,这对我不起作用,我试着做这里建议的事情: Ckeditor plugin configuration not working

但它不起作用。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

1。如果要保留外部插件文件:

根据API包装您的代码,请参阅例如https://sdk.ckeditor.com/samples/timestamp.html以及它引用https://sdk.ckeditor.com/samples/assets/plugins/timestamp/plugin.js的插件作为示例。您需要在plugin.js中使用CKEDITOR.plugins.add( 'defaulturl', { init: ... })。不确定是否有任何特殊要做,否则你想要修改CKEDITOR核心插件的行为。这就是为什么它会采用下一个选项...

2。如果您不需要额外的plugin.js

您还可以使用CKEDITOR.plugins.addExternal()文件的内容替换plugin.js来电。我这样做是为了将默认链接目标修改为_blank

// /lib/modules/apostrophe-areas/public/js/user.js
'use strict';

// See https://apostrophecms.org/docs/tutorials/howtos/ckeditor.html and
apos.define('apostrophe-areas', {
  construct: function(self, options) {
    var superEnableCkeditor = self.enableCkeditor;

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

      // https://docs.ckeditor.com/ckeditor4/latest/guide/dev_howtos_dialog_windows.html
      CKEDITOR.on('dialogDefinition', function redefineDialog(ev) {
        var dialogName = ev.data.name;
        var dialogDefinition = ev.data.definition;

        if (dialogName === 'link') {
          var targetTab = dialogDefinition.getContents('target');
          var targetField = targetTab.get('linkTargetType');

          targetField.default = '_blank';
        }
      });
    };
  }
});
祝你好运!