【问题标题】:Wysiwyg cant detect CKEditor所见即所得无法检测到CKEditor
【发布时间】:2013-10-24 19:55:49
【问题描述】:
我正在下载 Drupal 上的模块,但我遇到了所见即所得的问题。它说它需要一个编辑器库,所以我下载了 CKEditor 模块,它工作得很好。但是,当我进入所见即所得配置时,它一直告诉我“无法检测到 CKEditor 的版本。然后它说我应该提取内容以便可以在以下位置找到库:
sites/all/libraries/ckeditor/ckeditor.js
我确实这样做了,我重置了权限,我查看了不同的安装指南,但似乎没有任何效果。有谁知道我该如何解决这个问题?
【问题讨论】:
标签:
javascript
drupal
ckeditor
drupal-modules
wysiwyg
【解决方案1】:
如果您使用的是CKEditor的最新版本,即版本4,您需要编辑Drupal的所见即所得模块。该模块使用与 CKEditor 的版本定义(在 javascript 中)不匹配的正则表达式来验证编辑器版本。
您需要使用此修改后的代码将 wysiwyg/editors/ckeditor.inc 文件从第 77 行修改到第 88 行(基本上是 while 循环):
while ($max_lines && $line = fgets($library, 500)) {
// version:'CKEditor 3.0 SVN',revision:'3665'
// version:'3.0 RC',revision:'3753'
// version:'3.0.1',revision:'4391'
if (preg_match('@version:\"(?:CKEditor )?([\d\.]+)(?:.+revision:\"([\d]+))?@', $line, $version)) {
fclose($library);
// Version numbers need to have three parts since 3.0.1.
$version[1] = preg_replace('/^(\d+)\.(\d+)$/', '${1}.${2}.0', $version[1]);
return $version[1] . ((isset($version[2])) ? '.' . $version[2] : '');
}
$max_lines--;
}
正则表达式中的单引号改为双引号+返回值增加了一个额外的isset条件。