尝试向 CKEditor 添加插件
Trying to add a plugin to CKEditor
我正在尝试添加插件以在添加 link 时设置默认值 URL。
我按照此处的说明操作:
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');
};
}
});
这是我的 apostrophe-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 包装您的代码,参见例如https://sdk.ckeditor.com/samples/timestamp.html and the plugin it references https://sdk.ckeditor.com/samples/assets/plugins/timestamp/plugin.js 举个例子。您需要在 plugin.js 中使用 CKEDITOR.plugins.add( 'defaulturl', { init: ... })
。不确定是否有什么特别的事情要做,因为你想修改 CKEDITOR 核心插件的行为。这就是为什么它会选择下一个选项...
2。如果你不需要额外的 plugin.js
:
您还可以用 plugin.js
文件的内容替换 CKEDITOR.plugins.addExternal()
调用。我这样做是为了将默认 link 目标修改为 _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';
}
});
};
}
});
祝你好运!
我正在尝试添加插件以在添加 link 时设置默认值 URL。
我按照此处的说明操作: 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');
};
}
});
这是我的 apostrophe-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 包装您的代码,参见例如https://sdk.ckeditor.com/samples/timestamp.html and the plugin it references https://sdk.ckeditor.com/samples/assets/plugins/timestamp/plugin.js 举个例子。您需要在 plugin.js 中使用 CKEDITOR.plugins.add( 'defaulturl', { init: ... })
。不确定是否有什么特别的事情要做,因为你想修改 CKEDITOR 核心插件的行为。这就是为什么它会选择下一个选项...
2。如果你不需要额外的 plugin.js
:
您还可以用 plugin.js
文件的内容替换 CKEDITOR.plugins.addExternal()
调用。我这样做是为了将默认 link 目标修改为 _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';
}
});
};
}
});
祝你好运!