我正在尝试更改语言定义的值。我需要在创建编辑器实例的情况下以及在某些条件下执行此操作。
我不想更改语言文件,因为该文件很好,也因为同一网站上的其他编辑器不需要进行特定的修改。
有人可以帮助我吗?我正在使用CKEDITOR 3.6.1
$("form textarea").each(function()
{
var name = $(this).attr("name");
var instance = CKEDITOR.instances[name];
if(instance)
{
CKEDITOR.instances[name].destroy(true)
}
CKEDITOR.config.format_tags = 'h1;p';
CKEDITOR.config.format_p = { element : 'p', attributes : { 'class' : 'my_class' } };
//if(condition) CKEDITOR.config.lang.es.tag_h1 = "My special header";
//if(condition) CKEDITOR.lang.es.tag_h1 = "My special header";
CKEDITOR.replace(name);
});
答案 0 :(得分:0)
通过添加beforeInit
函数修改格式插件的代码:
CKEDITOR.plugins.add( 'format', {
requires: 'richcombo',
beforeInit: function( editor ) {
editor.lang.format.tag_h1 = 'Moooooooo!';
},
init: function( editor ) {
...
在此功能中,您可以修改所有语言条目,因为标签和内容会生成,插入并显示在下面的init()
中。您可以使用任何类型的条件来更改lang条目。
另一个解决方案:更难但更全球化。有了这个,您可以从一个地方覆盖所有插件,而无需触及源代码:
// Save the old CKEDITOR.plugins.load
var orgLoad = CKEDITOR.plugins.load;
// Overwrite CKEDITOR.plugins.load
CKEDITOR.plugins.load = function() {
// Save the old callback argument.
var oldCallback = arguments[ 1 ];
// Overwrite the old callback argument.
arguments[ 1 ] = function( plugins ) {
// Modify the plugin by adding beforeInit to the definition.
plugins.format.beforeInit = function( editor ) {
editor.lang.format.tag_h1 = 'Moooooooo!';
};
// Call the old callback.
oldCallback.call( this, plugins );
};
// Call old CKEDITOR.plugins.load
orgLoad.apply( this, arguments );
};