`
kingj
  • 浏览: 426404 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ckeditor自定义插件

    博客分类:
  • web
 
阅读更多

为CKEditor在线编辑器增加一个自定义插件

[转载声明] 转载时必须标注:本文来源于铁木箱子的博客http://www.mzone.cc
[本文地址] 本文永久地址是:http://www.mzone.cc/article/288.html

      CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越。记得07年的时候第一次接触FCKEditor,那时候花了一天时间研究如何在它基础上增加一个自定义插件,可以参考这里http://j2ee.blog.sohu.com/36813753.html,但过程比较复杂和麻烦。其实CKEditor提供了非常方便的可扩展的插件体系,用户通过它的扩展插件体系就可以非常方便的增加自定义插件,我这里简单的给出一个完整的插件示范。

      先到http://ckeditor.com/这里下载最新版本的CKEditor,我下载的是3.3.1版,大概有2M左右,包含了全部源码和测试用例。下载完毕后,解压到硬盘,假设CKEditor解压后的目录是${ckeditor},下面提到的都是用这个进行替代。下面就开始一步步制作属于我们自己的插件了。

一、创建插件目录结构

1、进入到${ckeditor}\plugins目录下,创建目录helloworld,这个目录名称就是我们的插件名称

2、在helloworld目录下分别建立三个目录:dialogsimageslang

二、编写插件文件

      每个插件都会有一个plugin.js的插件文件存在于插件目录的根目录下,一般使用CKEditor提供的API来进行插件的动态增加。首先,我们在helloworld目录下建立plugin.js文件,使用utf-8存储,该文件的内容如下:

  1. /**
  2.  * Title:CKEditor插件示范
  3.  * Author:铁木箱子(http://www.mzone.cc)
  4.  * Date:2010-08-02
  5.  */
  6. CKEDITOR.plugins.add('helloworld', {
  7. lang:['zh-cn','en'],
  8. requires: ['dialog'],
  9. init: function(a){
  10. var b = a.addCommand('helloworld', new CKEDITOR.dialogCommand('helloworld'));
  11. a.ui.addButton('helloworld', {
  12. label: a.lang.tbTip,
  13. command: 'helloworld',
  14. icon: this.path + 'images/hello.png'
  15. });
  16. CKEDITOR.dialog.add('helloworld', this.path + 'dialogs/helloworld.js');
  17. }
  18. });

三、插件的对话框

      我们在上面的插件文件中写了一个requires: ['dialog'],表示当点击工具栏上的插件图标时会调用一个对话框来进行处理。我们先在helloworld\dialogs目录下建立一个helloworld.js文件,使用utf-8保存,内容如下:

  1. /**
  2.  * Title:CKEditor在线编辑器的代码插入插件
  3.  * Author:铁木箱子(http://www.mzone.cc)
  4.  * Date:2010-07-21
  5.  */
  6. CKEDITOR.dialog.add('helloworld', function(editor) {
  7. var _escape = function(value){
  8. return value;
  9. };
  10. return {
  11. title: editor.lang.dlgTitle,
  12.    resizable: CKEDITOR.DIALOG_RESIZE_BOTH,
  13.    minWidth: 360,
  14.    minHeight: 150,
  15.    contents: [{
  16.    id: 'cb',
  17.    name: 'cb',
  18.    label: 'cb',
  19.    title: 'cb',
  20.    elements: [{
  21.    type: 'textarea',
  22.    required: true,
  23.    label: editor.lang.mytxt,
  24.    style: 'width:350px;height:100px',
  25. rows: 6,
  26.    id: 'mytxt',
  27.    'default': 'Hello World'
  28.    }]
  29.    }],
  30.    onOk: function(){
  31.    var mytxt = this.getValueOf('cb', 'mytxt');
  32.    editor.insertHtml(mytxt);
  33.    },
  34.    onLoad: function(){
  35.    }
  36. };
  37. });

四、插件的语言文件支持

      CKEditor本身就是支持i18n的,因此我们可以为插件定义多种语言,这样可以适应更多的场合。进入helloworld\lang目录,在这个目录下建立en.jszh-cn.js两个文件,分别用来支持中文和英文,内容分别如下:

  1. /**
  2.  * 支持英文的语言包(文件名称en.js),第一个参数是插件名称
  3.  */
  4. CKEDITOR.plugins.setLang('helloworld', 'en', {
  5. tbTip : 'Hello World Plugin Demo',
  6. mytxt : 'Text',
  7. dlgTitle : 'Hello World Plugin Demo(Powered By mzone.cc)'
  8. });
  9.  
  10. /**
  11.  * 支持英文的语言包(文件名称zh-cn.js),第一个参数是插件名称
  12.  */
  13. CKEDITOR.plugins.setLang('helloworld', 'zh-cn', {
  14. tbTip : 'Hello World插件示范',
  15. mytxt : '文本',
  16. dlgTitle : 'Hello World 插件示范(Powered By mzone.cc)'
  17. });

      这里定义的语言都是我们在插件中使用到的变量,一般在插件文件中的使用是editor.lang.propName,其中editor是当前的编辑器实体变量,插件一般都会传递的,propName是我们在语言文件中定义的属性名称,比如这里的tbTip等。

五、插件的图片指定

      我们其实在第二步编写插件文件中中已经指定了插件的图片文件:icon: this.path + ‘images/hello.png’。这里的icon指的就是在编辑器工具栏上显示的图标,我们这里找一个16×16大小的png图片,命名为hello.png,然后放到helloworld\images目录下即可。

六、演示验证插件

      完成上面5个步骤后,插件基本上就已经完成了。为了能够使插件可以出现在编辑器的工具栏中,我们还需要做如下配置:

1、打开${ckeditor}\config.js文件,修改内容为如下:

  1. CKEDITOR.editorConfig = function( config )
  2. {
  3. // Define changes to default configuration here. For example:
  4. // config.language = 'fr';
  5. // config.uiColor = '#AADC6E';
  6.  
  7. config.language = 'zh-cn';
  8.  
  9. config.toolbar_MyBasic = [
  10. [ 'Bold', 'Italic', '-', 'NumberedList','BulletedList' ],
  11. ['-', 'Link', 'Unlink', 'Image', 'helloworld' ]
  12. ];
  13.  
  14. config.extraPlugins += (config.extraPlugins ? ',helloworld' : 'helloworld');
  15. };

      其中config.extraPlugins这行是关键,表明这个是我们编写的额外插件,需要集成到CKEditor中去。这个仅仅是注册而已,如果需要显示在工具栏中,还要定义一个toolbar,比如我们这里定义了一个MyBasic的toolbar,并且只选取了CKEditor中最常用的几个工具,然后最后我们增加了helloworld的插件,这样我们就把刚才编写的插件注册到MyBasic的toolbar中了。

2、写一个demo.html文件进行测试

      我们在${ckeditor}根目录下建立一个demo.html文件来测试下我们刚写的插件是否有效,内容如下:

  1. <html>
  2. <head>
  3. <title>CKEditor插件编写示例-Powered By mzone.cc</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <script type="text/javascript" src="ckeditor.js"></script>
  6. </head>
  7. <body>
  8. <textarea cols="80" id="editor1" name="editor1" rows="10">This is the content!</textarea>
  9. <script>
  10. CKEDITOR.replace("editor1", {
  11. toolbar : 'MyBasic',
  12. height : 300,
  13. width : 800
  14. });
  15. </script>
  16. </body>
  17. </html>

      然后在浏览器中打开demo.html文件,就可以看到在编辑器的工具栏中最后一个就是我们刚写的插件了,如下图所示:

CKEditor中helloworld插件运行截图

七、插件包下载和部署

      上面演示效果的完整插件包可以从这里下载,将插件包下载后,安装如下方式进行部署:

1、解压插件包,将helloworld目录整个复制到${ckeditor}\plugins目录下;

2、将demo.html文件复制到${ckeditor}根目录下;

3、将第六步中的修改config.js文件内容替换掉${ckeditor}\config.js文件的内容;

4、完成后,在浏览器中运行demo.html文件即可看到效果

分享到:
评论

相关推荐

    Ckeditor自定义插件

    在本场景中,我们探讨的是如何为CKEditor自定义插件,以便实现特定功能:当用户选择一段文字后,点击自定义按钮,这段文字后面会添加一个图标,该图标作为超链接指向特定地址,并且选中的文字作为超链接的参数。...

    ckeditor自定义插件使用方法详解

    CKEditor是一款流行的开源富文本编辑器,广泛...通过上述内容的介绍和分析,我们已经了解了CKEditor自定义插件的使用方法和开发流程。希望本篇内容能对希望扩展或定制CKEditor功能的开发者们提供有价值的参考和帮助。

    ckeditor 自定义上传图片

    **ckeditor自定义上传图片** 在使用ckeditor作为富文本编辑器时,经常需要集成图片上传功能。ckeditor是一款强大的在线文本编辑器,它提供了丰富的文本格式化工具,使得在网页上编辑内容变得简单。然而,ckeditor...

    ckeditor4音频视频上传自定义插件

    1. **CKEditor 4 API**:首先,我们需要熟悉CKEditor 4的API,这是创建自定义插件的基础。API提供了各种方法和事件,如`CKEDITOR.instances`用于访问已创建的实例,`CKEDITOR.plugins.add`用于注册新插件,以及`...

    ckeditor4.2 自定义按钮和下拉框实现

    在本文中,我们将深入探讨如何在CKEditor 4.2版本中实现自定义按钮和下拉框的功能。CKEditor是一款强大的富文本编辑器,广泛应用于网页内容编辑,它提供了丰富的API和可扩展性,允许开发者根据需求进行定制。 首先...

    ckeditor自定义按钮

    ### CKEditor自定义按钮的配置步骤 #### 1. 准备工作 首先,开发者需要下载CKEditor的最新版本,这通常包括`lang`、`plugins`、`skins`目录以及配置文件`config.js`、`build-config.js`、`styles.js`等。为了兼容...

    ckeditor_4.x自定义按钮控件详细配置

    在 plugin.js 文件中,我们可以使用 CKEDITOR.plugins.add() 方法来添加插件,并在 init 函数中注册命令和加载自定义窗口。例如: ``` CKEDITOR.plugins.add('myplugin', { requires: ['dialog'], init: function...

    ckeditor5-plugins:自定义ckeditor5插件(例如

    CKEditor5-plugins基于ckeditor5的,适用于自定义构建的插件包。要使用此插件包,则不建议直接使用官方的classic、document、inline、balloon等构建,建议自定义构建features 包含功能├── src│ ├── clear-...

    ckeditor5:CkEditor5自定义构建

    包括用于设置外部方法以将内容插入编辑器的自定义插件: 插入连结 插入图片 插入片段 &lt; textarea class =" editor " &gt; &lt;/ textarea &gt; &lt; script src =" ../build/ckeditor.js " &gt; &lt;/ script &...

    CKEditor自定义按钮插入服务端图片

    在进行CKEditor自定义按钮开发之前,需要了解CKEditor的插件机制和编辑器的命令系统。CKEditor的插件通常由一个或多个JavaScript文件组成,插件文件负责定义编辑器的命令、工具栏按钮、对话框界面等。为了实现插入...

    ckeditor设置字体行高的插件

    ckeditor中用来设置字体行高的插件,解压后lineheight文件夹放到ckeditor---&gt;plugins目录下即可,如果不明白可以参考http://blog.csdn.net/zcyhappy1314/article/details/8651053第二的部分:ckeditor的配置

    ckeditor 3 自定义控件

    CKFinder 是一个文件管理器插件,可以与 CKEditor 无缝集成,提供文件上传和浏览等功能。在上面提到的 JavaScript 初始化配置中,已经指定了 CKFinder 的相关 URL,包括文件浏览和上传的路径。 ```javascript ...

    ckeditor 自己写的一个简单的image上传js 运用iframe的ajax上传

    "ckeditor 自己写的一个简单的image上传js 运用iframe的ajax上传"是一个关于CKEditor自定义插件的实践案例,通过JavaScript实现了图片上传功能。下面将详细阐述这一知识点及其相关技术。 首先,CKEditor是一款开源...

    ckeditor4 行高插件

    《ckeditor4行高插件详解及应用》 在网页编辑器的发展中,CKEditor一直以其强大的功能和良好的用户体验而备受青睐。CKEditor4是其重要的一代产品,它提供了丰富的可扩展性,允许用户根据需求定制编辑器的功能。在...

    ckeditor4添加上传视频插件

    3. **自定义UI**:可以通过CKEditor 4的API创建一个按钮或菜单项,触发视频选择和上传操作。 4. **事件监听**:监听上传事件,根据后端返回的响应更新编辑器内容,显示上传的视频。 5. **错误处理**:前端也需要...

    react-ckeditor:CKEditor组件,用于具有插件和自定义事件侦听器支持的React

    Reactckeditor组件CKEditor的React组件安装用法import CKEditor from "react-ckeditor-component" ;class Example extends Component { constructor ( props ) { super ( props ) ; this . updateContent = this . ...

    ckeditor5全屏按钮

    如果需要自定义全屏行为,可以使用CKEditor 5的API和插件系统。例如,可以创建一个新的插件来扩展全屏功能,或者通过修改现有配置文件来改变全屏按钮的位置和外观。 在实际应用中,CKEditor 5全屏按钮是提高内容...

    CKeditor富文本编辑器插件资源

    开发者可以通过研究这些插件的源码,了解如何创建自定义插件。 4. **配置文件**:CKeditor的配置文件(如`config.js`)允许开发者调整编辑器的行为,例如设置默认字体、大小、工具栏布局等。通过修改配置,可以定制...

    ckeditor插件richcombo

    CKEditor提供了多种内置功能,如字体样式、颜色、对齐方式、图片上传、链接创建等,同时支持自定义插件扩展,以满足不同项目的需求。 "richcombo"插件则是CKEditor的一种特殊组件,它设计为下拉框形式,提供了一种...

Global site tag (gtag.js) - Google Analytics