Drupal 7中的CKEditor缺失/不正确的basePath

时间:2013-09-10 11:29:30

标签: javascript drupal drupal-7 ckeditor

在自定义模块中,我已经包含了CKEditor

drupal_add_js( 'sites/all/libraries/ckeditor/ckeditor.js',array('weight'=>JS_LIBRARY+1));
drupal_add_js( 'sites/all/libraries/ckeditor/adapters/jquery.js',array('weight'=>JS_LIBRARY+2));

在我的JS中,我现在正在使用

在textarea上创建一个实例
jQuery('#myTextArea').ckeditor();

这是有效的,但现在不行。在Firebug中,我看到ckeditor正在尝试访问 config.js ,并且它正在寻找页面的URL。 应该关注http://example.com/sites/all/libraries/ckeditor/

我无法想象最近可能会破坏它的变化!

我已经尝试将config { basePath: '/sites/all/libraries/ckeditor/' }传递给ckeditor()调用但这被忽略了,可能无法在运行时设置它?

任何人都知道我做错了什么,或者如果这是一个错误,是否有解决方法?

2 个答案:

答案 0 :(得分:1)

正如我评论的那样,这似乎与编辑器通过Drupal的JS聚合加载时有关

这是一个丑陋的黑客,它对我有用。

编辑sites / all / libraries / ckeditor / ckeditor.js文件,并在压缩的js代码添加之前添加:

window.CKEDITOR_BASEPATH = 'http://example.com/sites/all/libraries/ckeditor/';

然后记住每次升级都要这样做。

PS。信用basepath hint

答案 1 :(得分:0)

当您更改默认的ckeditor.js文件名时,

CKEditor(已测试4.4.4)在确定正确的基本路径时出现问题。例如,为实时部署添加cachebreaker或使用聚合名称时。

您可以使用属性的输出轻松地重现该行为:CKEDITOR.basePath

您使用原始ckeditor文件名/ext/ckeditor/ckeditor.js在网站上(假设为http://example.de),路径为/ a / b / c / d:

Website: http://example.de/a/b/c/d
CKeditor: http://example.de/ext/ckeditor/ckeditor.js

console.log(CKEDITOR.basePath); //output: http://example.de/ext/ckeditor/ 

您在同一个网站上,相同的路径和ckeditor.js已更改:

Website: http://example.de/a/b/c/d
CKeditor: http://example.de/ext/ckeditor/ckeditor-whatever.js

console.log(CKEDITOR.basePath); //output: http://example.de/a/b/c/ 

通常,JavaScript控制台会显示以下错误:

Line 1: Uncaught SyntaxError: Unexpected token <
Uncaught TypeError: Cannot set property 'dir' of undefined

因此,如果更改默认文件名ckeditor.js,则始终需要设置基本路径。