记忆力是严重衰退了,关于百度编辑器还有个地方没提,那就是把PHP文件夹里的config.json文件得拷贝出来。我是放在了根目录下,然后为了系统好管理,需要打开这个文件修改编辑器上传后的目录。

“imagePathFormat”:"/ueditor/php/upload/..."

改成了:

“imagePathFormat”:"upload/image/..."

关于这里还有个小细节,就是分三种文件夹需要改三个地方,分别为图片image、视频video、文件file,注意分开别漏了就好。剩下的就是系统的存储目录修改了,打开/phpcms/libs/classes/attachment.class.php文件,在47行左右做如下改动:

$this->savepath = $this->upload_root.$this->upload_dir.date('Y/m/d');
$this->savepath = 'uploadfile/image/'.$this->upload_dir.date('Y/m/d');

把109行注释掉,第118行做如下改动:

$uploadedfile = array('filename'=>$file['name'],'filepath‘=>$filepath,....
$uploadedfile = array('filename'=>$file['name'],'filepath‘=>$savefile,....

这个文件最后把区分用户上传和管理员上传的字段补上,在add方法里,208行和220行之间随便哪个地方加上一句:

$uploadedfile['isuser'] = $_SESSION['roleid'] ? 0 : 1;

在这里我是用1表示为是注册用户0表示为管理员,做完这些就用phpMyAdmin或者Navicat之类的工具,在数据库附件表里手工加上这个字段。

再接着就是改系统的表单类了,文件是在/phpcms/libs/classes/form.class.php,改的代码很多,直接替换editor方法,代码如下:

public static function editor($textareaid = 'content',$module = '', $catid = '', $allowbrowser = 1,$alowuploadexts = '',$disabled_page = 0, $allowuploadnum = '10',$setting) { $editor = $setting['editor'] ? $setting['editor'] : 'ueditor' ; $str =''; if($editor == 'ueditor'){ if(!defined('EDITOR_INIT')) { $str = '<script type="text/javascript" src="'.JS_PATH.'ueditor.full.1.4.3.2/ueditor.config.js"></script>'; $str .= '<script type="text/javascript" src="'.JS_PATH.'ueditor.full.1.4.3.2/ueditor.all.min.js"></script>'; define('EDITOR_INIT', 1); } if($setting['toolbar'] == 'basic') { $admin = defined('IN_ADMIN') ? "'Source'," : ''; $toolbar = ",toolbars:[[".$admin."'FullScreen', 'Undo', 'Redo','Bold','italic','underline','strikethrough','superscript','subscript','formatmatch','removeformat','justifyleft','justifyright','justifycenter','justifyjustify','pasteplain','date','selectall','forecolor','insertorderedlist','insertunorderedlist','fontsize']]"; } elseif($setting['toolbar'] == 'full') { if(defined('IN_ADMIN')) { $admin = "'Source',"; } else { $admin = ''; } $toolbar = ", toolbars: [[ 'fullscreen', ".$admin." '|', 'undo', 'redo', '|', 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|', 'rowspacingtop', 'rowspacingbottom', 'lineheight', '|', 'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|', 'directionalityltr', 'directionalityrtl', 'indent', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|', 'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|', 'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|', 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|', 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|', 'print', 'preview', 'searchreplace', 'help', 'drafts' ]]"; } $str .= "<script type=\"text/javascript\">\r\n"; $str .= "UE.getEditor('$textareaid',{"; $str .= "serverUrl: '".APP_PATH."index.php?m=attachment&c=ueditupload&a=upload'"; if($setting['height']) $str .= ',initialFrameHeight:'.$setting['height']; $str .= $toolbar; $str .= '})'; $str .= '</script>'; }else if($editor == 'ckeditor'){ if(!defined('EDITOR_INIT')) { $str = '<script type="text/javascript" src="'.JS_PATH.'ckeditor4.5.9/ckeditor.js"></script>'; define('EDITOR_INIT', 1); } if($setting['toolbar'] == 'basic') { $toolbar = defined('IN_ADMIN') ? "['Source']," : ''; $toolbar .= "['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],['Maximize'],\r\n"; } elseif($setting['toolbar'] == 'full') { if(defined('IN_ADMIN')) { $toolbar = "['Source',"; } else { $toolbar = '['; } $toolbar .= "'-','Templates'], ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'], ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['ShowBlocks'],['Image','Capture','Flash','flashplayer','MyVideo'],['Maximize'], '/', ['Bold','Italic','Underline','Strike','-'], ['Subscript','Superscript','-'], ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor'], ['Table','HorizontalRule','Smiley','SpecialChar','PageBreak'], '/', ['Styles','Format','Font','FontSize'], ['TextColor','BGColor'], ['attachment'],\r\n"; } elseif($setting['toolbar'] == 'desc') { $toolbar = "['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink', '-', 'Image', '-','Source'],['Maximize'],\r\n"; } else { $toolbar = ''; } $str .= "<script type=\"text/javascript\">\r\n"; $str .= "CKEDITOR.replace( '$textareaid',{"; $str .= "height:{$setting['height']},"; $show_page = ($module == 'content' && !$disabled_page) ? 'true' : 'false'; $str .="pages:$show_page,subtitle:$show_page,textareaid:'".$textareaid."',module:'".$module."',catid:'".$catid."',\r\n"; if($setting['allowupload']) { $authkey = upload_key("$allowuploadnum,$alowuploadexts,$allowbrowser"); $str .="flashupload:true,alowuploadexts:'".$alowuploadexts."',allowbrowser:'".$allowbrowser."',allowuploadnum:'".$allowuploadnum."',authkey:'".$authkey."',\r\n"; } if($setting['allowupload']) $str .= "filebrowserUploadUrl : 'index.php?m=attachment&c=attachments&a=upload&module=".$module."&catid=".$catid."&dosubmit=1',\r\n"; if($color) { $str .= "extraPlugins : 'uicolor',uiColor: '$color',"; } $str .= "toolbar :\r\n"; $str .= "[\r\n"; $str .= $toolbar; $str .= "]\r\n"; $str .= "});\r\n"; $str .= '</script>'; $ext_str = "<div class='editor_bottom'>"; if(!defined('IMAGES_INIT')) { $ext_str .= '<script type="text/javascript" src="'.JS_PATH.'swfupload/swf2ckeditor.js"></script>'; define('IMAGES_INIT', 1); } $ext_str .= "<div id='page_title_div'> <table cellpadding='0' cellspacing='1' border='0'><tr><td class='title'>".L('subtitle')."<span id='msg_page_title_value'></span></td><td> <a class='close' href='javascript:;' onclick='javascript:$(\"#page_title_div\").hide();'><span>×</span></a></td> <tr><td colspan='2'><input name='page_title_value' id='page_title_value' class='input-text' value='' size='30'>&nbsp;<input type='button' class='button' value='".L('submit')."' onclick=insert_page_title(\"$textareaid\",1)></td></tr> </table></div>"; $ext_str .= "</div>"; if(is_ie()) $ext_str .= "<div style='display:none'><OBJECT id='PC_Capture' classid='clsid:021E8C6F-52D4-42F2-9B36-BCFBAD3A0DE4'><PARAM NAME='_Version' VALUE='0'><PARAM NAME='_ExtentX' VALUE='0'><PARAM NAME='_ExtentY' VALUE='0'><PARAM NAME='_StockProps' VALUE='0'></OBJECT></div>"; $str .= $ext_str; } return $str; }

最后一步了,在模型管理里字段编辑时添加上编辑器选择项,文件在/phpcms/modules/content/fields/editor/目录下面,一共有field_add_form.inc.php、field_edit_form.inc.php、form.inc.php三个文件,头两个文件在第二行加入:

<tr>       <td width="100">编辑器选择:</td>      <td><input type="radio" name="setting[editor]" value="ueditor" checked> 百度编辑器 <input type="radio" name="setting[editor]" value="ckeditor"> CK编辑器 </td></tr>

第三个文件在第6行后加入:

$setting = string2array($setting);

把倒数第二行的return内容改成如下:

return "<div id='{$field}_tip'></div>".'<textarea name="info['.$field.']" id="'.$field.'" boxid="'.$field.'">'.$value.'</textarea>'.form::editor($field,'content',$this->catid,1,'',$disabled_page,$allowuploadnum,$setting);

好了,至此大功告成,百度编辑器就算完美的和PHPcms结合了,整个过程步骤很多,需要细心调整,这样的结果是还可以往里面添加各类的编辑器,在管理员后台随时的更换。回顾整个过程最麻烦的主要在修改上传设置方面,为了和系统统一改了太多东西,如果不需要这功能的情况下,那就只要改form表单类和content目录下的字段设置文件这两地方就可以实现自由切换编辑器了。