在Ecshop 编辑器 FCKeditor更换为Kindeditor 的时候,网上的做法,要么替换成了,数据无法保存,要么只有商品编辑能用,在无数测试下,终于是整合出了完整的替换,对,完整,就是ecshop中整个后台的编辑器都替换成Kindeditor。
前言:如果仅仅需要修改商品编辑的编辑器,只需要参考方案一;如果需要整个ecshop的fck编辑器都要替换,则需要同时启用两个方案。当然,两个方案完全不冲突,方案一针对的是商品编辑那里的编辑器,没有用submit提交的,方案二针对的是用submit提交的。
方案一: 提交数据不是用submit提交的 如,编辑商品详情 那里
1,首先下载kindeitor最新版放到includes目录
修改kindeditor/php目录下面的upload_json.php里面的
//文件保存目录路径
$save_path = $php_path . '../../../images/upload/';
//文件保存目录URL
$save_url = $php_url . '../../../images/upload/';
kindeditor默认上传图片的路径是upload下面的image目录下面,以年月日为目录,如:image/20130401 我们把它修改为:以年月划分比较好。
在upload_json.php找到$ymd = date("Ymd"); 改为:$ymd = date("Ym");就可以了。
修改includes/kindeditor/php/file_manager_json.php
//根目录路径,可以指定绝对路径,比如 /var/www/attached/
$root_path = $php_path . '../../../images/upload/';
//根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
$root_url = $php_url . '../../../images/upload/';
2,删除或者注释 admin/goods.php 大约107行
include_once(ROOT_PATH . 'includes/fckeditor/fckeditor.php'); // 包含 html editor 类文件
3,更换 admin/goods.php 大约414行 create_html_editor('goods_desc', $goods['goods_desc']); 修改成:
$FCKeditor = create_html_kindeditor('goods_desc', $goods['goods_desc'], 'theForm');// 最后一个参数theForm是新增的,可以指定后台包含编辑器的表单的名字。
$smarty->assign('FCKeditor', $FCKeditor); //这样,ecshop模版里面原有的$FCKeditor就不用再去修改了。
4. 修改 admin/includes/lib_main.php文件,找到大概 大约324行增加create_html_kindeditor行数,代码如下:
/**
* 生成 kindeditor
* @param string input_name 输入框名称
* @param string input_value 输入框值
* @param string form_name 所在表单名称
*/
function create_html_kindeditor($input_name, $input_value = '', $form_name = '')
{
global $smarty;
$kindeditor = "<script src='/includes/kindeditor/kindeditor-all-min.js' charset='utf-8'></script>
<script src='/includes/kindeditor/lang/zh_CN.js' charset='utf-8'></script>
<script src='/includes/kindeditor/plugins/code/prettify.js' charset='utf-8'></script>
<script>
KindEditor.ready(function(K) {
var editor1 = K.create('textarea[name=".$input_name."]', {
cssPath : '/includes/kindeditor/plugins/code/prettify.css',
uploadJson : '/includes/kindeditor/php/upload_json.php',
fileManagerJson : '/includes/kindeditor/php/file_manager_json.php',
afterBlur : function() {
this.sync();
K.ctrl(document, 13, function() {
K('form[name=" . $form_name . "]')[0].submit();
});
K.ctrl(this.edit.doc, 13, function() {
K('form[name=" . $form_name . "]')[0].submit();
});
}
});
prettyPrint();
});
</script>
<textarea id=\"$input_name\" name=\"$input_name\" style='width:700px;height:300px;'>$input_value</textarea>";
return $kindeditor;
}
//***说明,这里调用的aterBlur的JS函数,就可以解决ecshop更换kindeditor编辑器,提交数据不保存的原因了,因为如果没调用editor的sync函数的话,编辑器里面生成的内容,没办法保存提交的。
5. kindeditor中 ./php目录下的 file_manager_json.php和upload_json.php中的
$php_path 和 $php_url 改成自己想要的就行了。
友情提醒:一般来说这种开源编辑器难免有漏洞公布出来,最好是把kindeditor的路径给改了。这样别人访问不到editor的路径,可以介绍风险。
方案二: 提交表单用submit提交的 如,文章、邮件、专题那里的编辑器 那里
1,首先下载kindeitor最新版放到includes目录
修改kindeditor/php目录下面的upload_json.php里面的
//文件保存目录路径
$save_path = $php_path . '../../../images/upload/';
//文件保存目录URL
$save_url = $php_url . '../../../images/upload/';
kindeditor默认上传图片的路径是upload下面的image目录下面,以年月日为目录,如:image/20130401 我们把它修改为:以年月划分比较好。
在upload_json.php找到$ymd = date("Ymd"); 改为:$ymd = date("Ym");就可以了。
修改includes/kindeditor/php/file_manager_json.php
//根目录路径,可以指定绝对路径,比如 /var/www/attached/
$root_path = $php_path . '../../../images/upload/';
//根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
$root_url = $php_url . '../../../images/upload/';
2,删除或者注释 admin/goods.php 大约107行
include_once(ROOT_PATH . 'includes/fckeditor/fckeditor.php'); // 包含 html editor 类文件
3., 把admin/includes/lib_main.php 中的
function create_html_editor()这个方法注释或删除,添加下面的方法
/**
* 生成 kindeditor
* @param string input_name 输入框名称
* @param string input_value 输入框值
* @paramstringform_name 所在表单名称
*
*
* submit 提交的 使用这个方法
*/
function create_html_editor($input_name, $input_value = '')
{
global $smarty;
$kindeditor="<script charset='utf-8' src='../includes/kindeditor/kindeditor-min.js'></script>
<script>
var editor;
KindEditor.ready(function(K) {
editor = K.create('textarea[name=\"$input_name\"]', {
allowFileManager : true,
width : '100%',
height: '600px',
resizeType: 0 //固定宽高
});
});
</script>
<textarea id=\"$input_name\" name=\"$input_name\" style='width:100%;height:600px;'>$input_value</textarea>
";
$smarty->assign('FCKeditor', $kindeditor);
}