将CKEditor Format插件自定义为一个简单的按钮

时间:2013-12-12 16:48:23

标签: ckeditor

内置格式插件是可能标签的下拉列表(h1,h2,p,pre ..)。可以在配置文件中轻松配置标签列表。

我只使用一个标记,因此使用下拉列表会使工具栏变得复杂并影响可用性。

是否可以自定义现有插件或创建新的插件:

1)使用简单按钮代替下拉菜单,使用自定义图标

2)单击按钮时,会将预定义格式H1添加到所选文本

简单地说,工具栏按钮会模拟下拉项目选择,点击“标题1”。

1 个答案:

答案 0 :(得分:3)

据我所知,格式不能为外部调用提供方便的界面,但您可以创建自己的插件。

基本上,它归结为使用 CKEDITOR.style 对象:

// Creates a style object, 
var styleObj = new CKEDITOR.style( { element: 'pre' } );

editor.applyStyle( styleObj );
// Or if you wish to remove style:
// editor.removeStyle( styleObj );

我创建了简单的全功能样本插件,名为 myFormat

( function() {

    "use strict";

    var pluginName = 'myFormat';

    CKEDITOR.plugins.add( pluginName, {
        icons: pluginName, // If you wish to have an icon...

        init: function( editor ) {
            // Tagname which you'd like to apply.
            var tag = 'h2',
                // Note: that we're reusing.
                //style = new CKEDITOR.style( editor.config[ 'format_' + tag ] );
                style = new CKEDITOR.style( { element: 'pre' } );

            // Creates a command for our plugin, here command will apply style. All the logic is
            // inside CKEDITOR.styleCommand#exec function so we don't need to implement anything.
            editor.addCommand( pluginName, new CKEDITOR.styleCommand( style ) );

            // This part will provide toolbar button highlighting in editor.
            editor.attachStyleStateChange( style, function( state ) {
                !editor.readOnly && editor.getCommand( pluginName ).setState( state );
            } );

            // This will add button to the toolbar.
            editor.ui.addButton( 'MyFormat', {
                label: 'Click to apply format',
                command: pluginName,
                toolbar: 'insert,5'
            } );
        }
    } );

} )();

只需将代码放入<ckeditorDirectory>/ckeditor-dev/plugins/myFormat/plugin.js

不要忘记修改您的CKEditor配置以包含 myFormat 插件,并将一些奇特的图标添加到<ckeditorDirectory>/ckeditor-dev/plugins/myFormat/icons/myFormat.png