CkEditor 4.0.1.1 For Typecho 0.8 编辑器插件不能插入图片的原因
typecho 的插件CKEditor 4.0.1.1 For Typecho 0.8 的确定是不能插入图片,
默认的typecho 编辑器KEditor是可以插入图片的。
通过查看后台管理在插入的动作的调用代码。
insertImageToEditor('jiandanjie.com_30_108.png', 'http://jiandanjie.com/news/usr/uploads/2013/12/3760245610.png', 'http://jiandanjie.com/news/attachment/78/', 78);
在后台的代码:
<span class="insert" onclick="<?php if ($attachment->attachment->isImage){
echo "insertImageToEditor('{$attachment->title}', '{$attachment->attachment->url}', '{$attachment->permalink}', {$attachment->cid});";
} else {
echo "insertLinkToEditor('{$attachment->title}', '{$attachment->attachment->url}', '{$attachment->permalink}', {$attachment->cid});";
} ?>"><?php _e('插入'); ?></span>
进行排查,
原来是,插件KEditor 的配置文件Plugin.php 中有配置如下调用KEditor的方法,
function insertHtml(id, html) {
KE.util.focus(id);
KE.util.selection(id);
KE.util.insertHtml(id, html);
}
/** 附件插入实现 */
var insertImageToEditor = function (title, url, link) {
insertHtml('text', '<a xhref=\"' + link + '\" title=\"' + title + '\"><img xsrc=\"' + url + '\" alt=\"' + title + '\" /></a>');
};
var insertLinkToEditor = function (title, url, link) {
insertHtml('text', '<a xhref=\"' + url + '\" title=\"' + title + '\">' + title + '</a>');
};
但是目前的CKEditor 4.0.1.1 For Typecho 0.8 没有实现导致的,
解决办法当然是添加咯。。
不行的话,修改<?php _e('插入'); echo" {$attachment->attachment->url}" ?>
然后复制黏贴哈
或者添加方法如下:
把CkEditor/Plugin.php下的第84行的
<script type=\"text/javascript\">CKEDITOR.replace( 'text', {fullPage: false});</script>";
替换为如下语句即可:
<script type=\"text/javascript\">CKEDITOR.replace('text');
var insertImageToEditor = function (title, url, link) {
if ( CKEDITOR.instances.text.mode == 'wysiwyg' ) {
CKEDITOR.instances.text.insertHtml('<a href=\"' + link + '\" title=\"' + title + '\"><img src=\"' + url + '\" alt=\"' + title + '\" /></a>') ;
}
else
{
alert('请先转换到所见即所得模式') ;
}
};
var insertLinkToEditor = function (title, url, link) {
if ( CKEDITOR.instances.text.mode == 'wysiwyg' ) {
CKEDITOR.instances.text.insertHtml('<a href=\"' + url + '\" title=\"' + title + '\">' + title + '</a>') ;
}
else
{
alert('请先转换到所见即所得模式') ;
}
};
</script> ";