ckeditor使用具有不同工具栏配置的类名替换textarea

时间:2013-07-22 08:20:12

标签: ckeditor

我使用以下代码将ckeditor添加到我的页面。

<textarea class="ckeditor" name="editor1"></textarea>

我想定义一些工具栏配置,因为我的应用程序中并非所有textareas都需要一个完整的工具栏。 我已根据自己的需要自定义了默认的工具栏配置,但我想进一步将其拆分为一些更基本的工具栏,用于我的一些textareas。

如果我使用class属性设置ckeditor,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

对于按类名创建的编辑器,不可能有不同的配置。在这种情况下,只考虑全局CKEDITOR.config

还有这个问题的简单解决方法。首先,将此脚本放在文档的顶部:

<script>
    CKEDITOR.replaceClass = null; // Disable replacing by class
</script>

现在为您要替换的每个data-custom-config定义<textarea>属性(config.customConfig),如下所示:

<textarea class="ckeditor" data-custom-config="myCustomConfig.js">
    Moo
</textarea>

最后使用以下代码按类名手动替换编辑器(假设您的类为ckeditor)。此代码将使用由ckeditor属性中定义的配置驱动的CKEditor实例替换类data-custom-config的所有textareas:

var textareas = Array.prototype.slice.call( document.getElementsByClassName( 'ckeditor' ) ),
    textarea, cfg, customCfg;

while ( ( textarea = textareas.pop() ) ) {
    textarea = new CKEDITOR.dom.element( textarea );
    cfg = {};

    if ( ( customCfg = textarea.getAttribute( 'data-custom-config' ) ) )
       cfg[ 'customConfig' ] = customCfg;

    CKEDITOR.replace( textarea.getId(), cfg )
}

现在是樱桃的顶部。将自定义工具栏配置放在myCustomConfig.js

CKEDITOR.editorConfig = function( config ) {
    config.toolbar = [
        { name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
    ];
};

当然,您可以修改此代码以使jQuery更容易选择元素,使用一些对象文字而不是config.customConfig等等。这只是一个如何解决问题的展示。