商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CKEDITOR二次开发之插件开发方法

CKEDITOR二次开发之插件开发方法

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

在开始之前,先聊聊CKEditor源码的组织形式,对于理解后续的插件开发会很有帮助。CKEditor的源文件都放在ckeditor_source目录下。核心功能,比如DOM元素操作、事件处理、初始化脚本和一些环境设置,集中在ckeditor_source\core文件夹里。而其他功能,比如格式化、复制粘贴、图片和链接,都是以插件形式实现的,放在ckeditor_source\plugins文件夹内。每个插件都有一个独立的文件夹,里面有个plugin.js文件,存放了该插件的核心代码。

你可以看到,源代码被分散在不同的文件中。为了减少HTTP请求,CKEditor最终把这些文件压缩打包成ckeditor.jsckeditor_basic.js,加载起来更高效。

创建一个日期插件(date)

接下来,我们一步步实现一个日期插件。整个过程可以分为几个清晰的步骤。

1. 创建插件目录与核心文件

首先,在ckeditor\plugins\目录下新建一个名为date的文件夹。然后,在date文件夹内创建plugin.js文件,并输入以下代码。这段代码的作用是注册插件,并绑定一个对话框命令。

CKEDITOR.plugins.add('date', {  requires: ['dialog'],  init: function (a) {    var b = a.addCommand('date', new CKEDITOR.dialogCommand('date'));    a.ui.addButton('date', {      label: a.lang.date.toolbar,      command: 'date',      icon: this.path + 'images/date.jpg'    });    CKEDITOR.dialog.add('date', this.path + 'dialogs/date.js');  }});

2. 准备图标文件

date文件夹下新建一个images目录,放入一张名为date.jpg的图标图片。可以从网上找一张16x16像素的图标,大小刚好合适。

3. 编写对话框逻辑

date文件夹下新建一个dialogs目录,然后创建date.js文件,输入以下代码。这个文件定义了插件弹出的对话框内容,包括输入框和说明文字。

CKEDITOR.dialog.add('date', function(editor){  var escape = function(value){    return value;  };  return {    title: '日历控件',    resizable: CKEDITOR.DIALOG_RESIZE_BOTH,    minWidth: 300,    minHeight: 80,    contents: [{      id: 'cb',      name: 'cb',      label: 'cb',      title: 'cb',      elements: [{        type: 'text',        label: '请输入日期控件名称',        id: 'lang',        required: true,      },{        type:'html',        html:'

说明:日历控件选择的日期、时间将回填到该输入框中。

' }] }], onOk: function(){ lang = this.getValueOf('cb', 'lang'); editor.insertHtml("

" + lang + "

"); }, onLoad: function(){ } };});

4. 将插件注册到CKEditor核心

下一步,需要将插件加入到CKEditor的配置中。这里我们直接修改核心文件ckeditor.js。以现有的about插件为参考,查找about,找到类似这样的行:

fullPage:false,height:200,plugins:'about,basicstyles

about后面加上date,变成:

plugins:'about,date,basicstyles

继续查找about,找到类似这样的代码段:

j.add('about',{init:function(l){var m=l.addCommand('about',new a.dialogCommand('about'));m.modes={wysiwyg:1,source:1};m.canUndo=false;l.ui.addButton('About',{label:l.lang.about.title,command:'about'});a.dialog.add('about',this.path+'dialogs/about.js');}});

在这段代码前面,插入新插件的注册代码:

j.add('date', {requires: ['dialog'],init: function(l){l.addCommand('date', new a.dialogCommand('date'));l.ui.addButton('date', {label: l.lang.date.toolbar,command: 'date',icon: this.path + 'images/code.jpg'});a.dialog.add('date', this.path + 'dialogs/date.js');}});

接下来,查找i.toolbar_Basic=,这是CKEditor默认的工具栏配置。在工具栏中合适的位置添加date,例如:

['Maximize','ShowBlocks','-','date']

5. 添加语言文件

打开ckeditor\lang\zh-cn.js文件,在里面增加一行语言配置,让中文界面能正确显示插件名称:

,date:{toolbar: '日期控件'}, link: { toolbar: '编辑超链接', other: '<其他>', 

6. 配置工具栏显示

如果需要自定义工具栏,可以打开config.js进行配置。例如,在配置数组中添加date按钮:

/*Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.For licensing, see LICENSE.html or http://ckeditor.com/license*/CKEDITOR.editorConfig = function( config ){  config.toolbar =  [    ['Source'],    ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Print', 'Link', 'Unlink', 'Anchor'],    ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'ImageButton', 'Image'],    ['Styles', 'Format', 'Font', 'FontSize'],    ['TextColor', 'BGColor'],    ['date'] // 刚创建的日期插件(date)  ];};

到这里,对CKEditor的修改就完成了。运行后,工具栏上会出现一个新的日期控件按钮,点击即可弹出对话框进行操作。

实例图片:

CKEDITOR二次开发之插件开发方法

CKEDITOR二次开发之插件开发方法

CKEDITOR二次开发之插件开发方法

本文转载于:https://www.jb51.net/article/109317.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注