开发者社区> 问答> 正文

CKEditor配置及插件(Plugin)编写示例:报错

(文本作者:红麦软件 屈伟,转载请注明来源)

FCKEditor重写了js框架,并改名为CKEditor。第一次在CKEditor网站上看到demo界面,就被CKEditor友好的界面和强大的功能所震撼。毫无疑问,CKEditor是当前互联网上最优秀的开源多媒体HTML编辑器。

本文记录配置CKEditor过程,并以文章分页插件为例,简要CKEditor Plugin编写过程。 从官网http://ckeditor.com/download下载最新版 CKEditor,解压。

1. 调用CKEditor方法

在页面里加载核心js文件:<script type=”text/javascript” src=”ckeditor/ckeditor.js”></script>,按常规方式放置textarea,如:< textarea id=”editor1″ name=”editor1″ rows=”10″ cols=”80″>初始化html内容</textarea>

然后在textarea后面写js:<script type=”text/javascript”>CKEDITOR.replace( ‘editor1′ );</script>

其他调用方式可参考 _samples 目录下的示例。

2. 配置个性化工具栏

ckeditor默认的工具栏中很多不常用,或者相对中文来说不适用。可通过配置默认工具栏方式实现,最简洁的方法是直接修改配置文件 config.js  我的config.js内容如下:

CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = ‘fr’;
config.uiColor = ‘#ddd’;

config.toolbar = ‘Cms’;
config.toolbar_Cms =
[
['Source','-'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-'],
['Undo','Redo','-','Find','Replace','RemoveFormat'],['Link','Unlink','Anchor'],
['Image','Flash','Table','HorizontalRule', '-'],['Maximize'],
‘/’,
['Bold','Italic','Underline','Strike','-'],
['FontSize'],['TextColor','BGColor'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['PageBreak', 'Page']
];

config.filebrowserUploadUrl = ‘/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files’;
config.fontSize_sizes = ‘10/10px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;28/28px;32/32px;48/48px;’;

config.extraPlugins = ‘apage’;
};

3. 将编辑器内文字修改为14px (默认12px,对中文显示不太好看)

1)可视化编辑里默认字体大小:修改根目录下 contents.css,将body中font-size: 12px改为 font-size: 14px

2)源代码视图字体大小:修改skins\kama\editor.css,在最后加一句:.cke_skin_kama textarea.cke_source { font-size:14px; }
4. 插件编写流程和实例代码

1) 在plugins目录新建文件夹apage,在apage下新建文件:plugin.js 内容如下:

CKEDITOR.plugins.add( ‘apage’,
{
init : function( editor )
{
// Add the link and unlink buttons.
editor.addCommand( ‘apage’, new CKEDITOR.dialogCommand( ‘apage’ ) );
editor.ui.addButton( ‘Page’,
{
//label : editor.lang.link.toolbar,
label : “Page”,

//icon: ‘images/anchor.gif’,
command : ‘apage’
} );
//CKEDITOR.dialog.add( ‘link’, this.path + ‘dialogs/link.js’ );
CKEDITOR.dialog.add( ‘apage’, function( editor )
{
return {
title : ‘文章分页’,
minWidth : 350,
minHeight : 100,
contents : [
{
id : 'tab1',
label : 'First Tab',
title : 'First Tab',
elements :
[
{
id : 'pagetitle',
type : 'text',
label : '请输入下一页文章标题<br />(不输入默认使用当前标题+数字形式)'
}
]
}
],
onOk : function()
{
editor.insertHtml(”[page="+this.getValueOf( 'tab1', 'pagetitle' )+"]“);
}
};
} );
},

requires : [ 'fakeobjects' ]
} );

2)在toolbar中加一项Page,并在配置中声明添加扩展插件 config.extraPlugins = ‘apage’;  有两种方法实现,方法一是直接在config.js中添加,示例本文上面的config.js示例代码; 方法二:在引用CKEditor的地方加配置参数,如:

CKEDITOR.replace( 'editor1',
{
extraPlugins : ‘examenLink’,
toolbar : [
['Undo','Redo','-','Cut','Copy','Paste'],
['ExamenLink','Bold','Italic','Underline',],
['Link','Unlink','Anchor','-','Source'],['
Page']
]
});

此时你应该看到编辑器里多了一个空白的按钮了。

解决空白按钮的方法有二:

方法1:修改插件代码,plugin,将icon定义为一个存在的图标。

方法2:让编辑显示Label的文字。需要加在放编辑器的页面里加css(注意:cke_button_apage 的名称与实际保持一致。)
<style type=”text/css”>
.cke_button_apage .cke_icon { display : none !important; }
.cke_button_apage .cke_label { display : inline !important; }
</style>

如果你的分页只需要插入一个分页符,不需要像本文需要填写标题,那更简单,只需要修改插件代码即可。请在红麦软件团队wiki上查看本文提到的所有代码:
http://www.teamwiki.cn/js/ckeditor_config_plugin

展开
收起
kun坤 2020-06-07 09:58:38 1050 0
1 条回答
写回答
取消 提交回答
  • 不错。我们也正在项目中用到该控件。

    ######

    最近的项目中改用kindEditor了

    刚刚在kindEditor首页发现了这条信息

     

    拍拍网采用了KindEditor

    腾讯旗下的拍拍网最新一次更新中把它的编辑器改用KindEditor,采用的版本是3.4.3。其实拍拍网去年联系过我,告诉我他们打算使用KindEditor,没想到一直到现在才正式上线,而且版本也没那么旧。
    这是继搜房网、泡泡网、房价网、久游网等知名网站采用KindEditor之后,又一个重量级网站采用KindEditor!
     
    要看拍拍网的编辑器,到卖家的店铺装饰设置里能看到,自己加过一些功能,非常值得参考。
     
    KindEditor的终极目标是打造成精品中的精品并国内大部分网站都使用KindEditor,要实现这个目标只能坚持不懈地努力,并认真听取来自用户的建议,KindEditor欢迎各位提出宝贵意见。

    ######

    如何在dialog里面用iframe调用一个html页面?

    ######

    最近新版的CKEditor 4.0 感觉不错,想装在mediawiki 1.20版本上,但是失败了, 提示 在CKEditor.body.php 文件调用未定义的方法 strip(), 换了 mediawiki1.8+  和 mediawiki1.9+ 测试,还是不行; 

    本人安装过程:

    1. 正常安装 mediawiki

    2. 下载wysiwyg-1.7.0_1.zip 解压 放于 mediawiki 里面 的 extensions

    3. 下载ckeditor_4.0_full.zip 解压将里面的ckeditor 替换 上一步的wysiwyg 内的 ckeditor

    最后运行的时候,提示 在CKEditor.body.php 文件调用未定义的方法 strip(), 求指教!

    ######

    自定义的插件如何打包到ckeditor.js里

    我用的是3.5的,待解救

    2020-06-07 09:58:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于webpack和npm的前端组件化实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载