我有一个工作扩展插件(myplugin),它扩展了drupalimagecaption插件,扩展了drupalimage,扩展了原始图像插件。现在我想为myplugin插件添加一个额外的工具栏按钮。以下是我尝试添加的方法:
(function (CKEDITOR) {
'use strict';
CKEDITOR.plugins.add('myplugin', {
icons: 'drupalimage,DoubleImage',
requires: 'drupalimagecaption',
hidpi: true,
beforeInit: function (editor) {
// [...] Here are some overwrites
var imageSaveCallback = function (data) {
editor.fire('saveSnapshot');
var content = data.image_render;
editor.insertHtml(content);
editor.fire('saveSnapshot');
};
// Implementation before initializing plugin.
editor.addCommand('InsertDoubleImage', {
canUndo: true,
exec: function (editor, data) {
Drupal.ckeditor.openDialog(editor,
Drupal.url('mydrupalmodule/dialog/double_image/' + editor.config.drupal.format),
{},
imageSaveCallback,
{}
);
}
});
// Register the toolbar button.
if (editor.ui.addButton) {
editor.ui.addButton('DoubleImage', {
label: Drupal.t('Upload Double Image'),
command: 'InsertDoubleImage'
});
}
}
});
})(CKEDITOR);
我的主要问题是,为什么这个按钮没有显示在drupal的管理界面上,所以我无法添加到CKeditor的工具栏。我还有一个PHP类加载这个文件(这个脚本所在的位置),我也定义了新的和当前的按钮:
public function getButtons() {
return [
'DrupalImage' => array(
'label' => t('Single Image Popup'),
'image' => drupal_get_path('module', 'mydrupalmodule') . '/js/plugins/elevation/icons/drupalimage.png',
),
'DoubleImage' => array(
'label' => t('Double Image Popup'),
'image' => drupal_get_path('module', 'mydrupalmodule') . '/js/plugins/elevation/icons/DoubleImage.png',
),
];
}
其实我不知道自己错过了什么,而且我无法找到为什么不想工作...(只有覆盖工作,但按钮不会出现...)如果覆盖现有插件,则无法添加新按钮?
答案 0 :(得分:0)
好的,我解决了这个问题。如果我想在Drupal 8中为CKeditor创建一个插件,我需要扩展CKEditorPluginBase
而不是PluginBase
类。它们扩展了PluginBase
类中的DrupalImageCaption
(我用作基础),但这在我的情况下不起作用。