转:php下fckeditor 2.6.6的使用和配置...
时间:2010-08-11 来源:millia
一、下载
1、首先去官网下载FCKeditor2.6.6 多国语言版(可以搜索“FCKeditor 2.6.6, released on 15 February 2010”)。下载地址: http://ckeditor.com/download。
二、精简
按照如下步骤删除其中一些不需要的测试文件:
1.只保留/fckeditor/目录下的fckconfig.js(配置文件)、fckeditor.js(js方式调用文件)、fckeditor.php(php方式调用文件)、fckeditor_php4.php(php4的调用文件)、fckeditor_php5.php(php5的调用文件)、fckstyles.xml(样式)、fcktemplates.xml(模板)文件和editor文件夹七个文件以外的所有文件;
2.删除目录/editor/_source(基本上,所有_开头的文件夹或文件都是可选的);
3.删除/editor/filemanager/connectors/(存放编辑器所支持的Web动态语言)下除了php目录的所有目录;
4.删除/editor/lang/(存放的是多语言配置文件)下的除了 en.js, zh.js, zh-cn.js三个文件的所有文件。
三、设置
1.更改默认语言和编程语言:
打开/fckeditor/fckconfig.js ;(千万注意这个文件是utf-8编码,我第一次编辑的时候保存成了ANSI格式结果出错了,找了好长时间原因)修改->
FCKConfig.AutoDetectLanguage =false;(使其不能根据系统语言自动检测加载相应的语言。)
FCKConfig.DefaultLanguage = ‘zh-cn’ ;
var _FileBrowserLanguage = ‘php’ ;
var _QuickUploadLanguage = ‘php’ ;
2.开启文件上传的功能:
配置editor\filemanager\connectors\php\config.php
将$Config['Enabled'] = false ;改为$Config['Enabled'] = true ;
更改$Config['UserFilesPath'] = ‘/userfiles/’ ;为你的上传目录(注意:这个目录要存在——自己创建好);
注意:这个目录是相对于主目录的。 也就是说,这个目录是相对于根目录的,注意,如果你在本机上测试,那么,这个根目录就是 http://localhost 。
四、调用
可以按下面的例子在php(例子中的PHP文件放在网站的子目录中)中调用fckeditor编辑器:
include(”../fckeditor/fckeditor.php”); // 包含fckeditor类,fckeditor目录放在网站根目录下
$BasePath = “/fckeditor/”; // 编辑器路径
$oFCKeditor = new FCKeditor(’CreMer’); // 创建一个fckeditor对象,表单的名称为CreMer
$oFCKeditor->BasePath = $BasePath;
$oFCKeditor->Value = ‘test’; // 设置表单初始值
// 还可设置以下部分(“=”包含部分),并非必须:
//====================================================================//
$oFCKeditor->Width = ‘800′; // 编辑器宽度,类中有默认值,如果不想修改可不管此项
$oFCKeditor->Height= ‘300′; // 同width,此处为高$oFCKeditor->ToolbarSet
$oFCKeditor->ToolbarSet = ‘Basic’; // 默认编辑器工具栏有Basic(基本工具)和Default(所有工具)两种选择,另外还可以自己建立工具栏
$oFCKeditor->Config['SkinPath'] = ‘/fckeditor/editor/skins/silver/’; // 设置编辑器皮肤
//====================================================================//
$oFCKeditor->Create(); // 调用类中方法,必须用$_POST['CreMer']就能获取文本框里面的值。
说明:
include(”../fckeditor/fckeditor.php”) ; //引入fckeditor类 注意fckeditor_php5.php或4中class声明的类名称
$sBasePath = “fckeditor/”; //设置编辑器路径fckeditor文件夹下
$oFCKeditor = new FCKeditor(’content’) ; //创建一个Fckeditor对象,其中content为表单输入内容变量.对应$_POST[content];
$oFCKeditor->BasePath = $sBasePath ;
$oFCKeditor->Value = ‘This is some <strong>sample text</strong>’ ; //设置表单初始值
$oFCKeditor->Create() ;
$oFCKeditor->Width //设置长宽
$oFCKeditor->Height
$oFCKeditor->ToolbarSet
五、其他例子
关于上传图片大小的问题,控制大小,让宽度固定,高度随原先的比例缩小或者放大。
在fckeditor\editor\dialog\fck_image\fck_image.js
找到
Js代码
GetE('txtWidth').value = oImageOriginal.width ;
GetE('txtHeight').value = oImageOriginal.height ;
调整为:
Js代码
if ( oImageOriginal.width < 450 ) {
GetE('txtWidth').value = oImageOriginal.width ;
GetE('txtHeight').value = oImageOriginal.height ;
} else {
GetE('txtWidth').value = 450 ;
GetE('txtHeight').value = 450 * oImageOriginal.height / oImageOriginal.width ;
}
六、其他技巧
1.修改工具栏按钮:
这样做主要是为了提高安全性,减少一般用户可以使用的功能:
FCKConfig.ToolbarSets["MyStyle"] = [
['Source','Preview','FitWindow','-','Templates'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
['ShowBlocks'],
‘/’,
['Bold','Italic','Underline','StrikeThrough','TextColor','BGColor'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
‘/’,
['Style','FontFormat','FontName','FontSize']
// No comma for the last row.
] ;
或者更改
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-','Link','Unlink','Image','-','About']
] ;
在设置后,调用时添加这个语句:
$oFCKeditor->ToolbarSet = ‘MyStyle’ ;
2.上传中文名文件时显示乱码怎么办
在文件connectors/php/commands.php中查找:
$sFileName = $oFile['name'] ;
在后面添加一行:
$sFileName = iconv(”utf-8″,”gbk”,$sFileName);
3、修正文件列表时中文文件名显示乱码问题
在文件connectors/php/util.php中查找:
return ( utf8_encode( htmlspecialchars( $value ) ) ) ;
修改为:
return iconv(”,’utf-8′,htmlspecialchars( $value ));
4、修正新建中文文件夹时的文件夹名乱码问题
在文件connectors/php/commands.php中查找:
$sNewFolderName =
在后面添加一行:
$sNewFolderName = iconv(”utf-8″,”gbk”,$sNewFolderName);
2.6.3版及后续版本的fck下的html文件已经加了utf-8的文件头。
5.给文章添加不同的样式
6、配置皮肤。
“fckeditor\editor\skins\”目录中有default、office2003、silver等风格可供选择。
打开/fckeditor/fckconfig.js ;
修改->FCKConfig.SkinPath = FCKConfig.BasePath + ’skins/default/’ ;
7、在编辑器域内可以使用Tab键。
打开/fckeditor/fckconfig.js ;
修改(1为是,0为否)->FCKConfig.TabSpaces = 0 ; 改为 FCKConfig.TabSpaces = 1 ;
8、加上几种常用的字体:
打开/fckeditor/fckconfig.js ;
修改-> FCKConfig.FontNames = ‘宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana’;
9、修改默认的显示字体
可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,修改font-size属性即可。
10、在上传文件窗口点击浏览服务器出错
可能会出现“the server didn’t send back a proper xml….. ”的错误提示。
因为FCKeditor要求不同类型的文件分别传到不同的目录,包括file,image,falsh,media 等目录,可以先建立起来试试。为PHP正确设置FckEditor文件上传目录,设置后的上传路径效果为: /upfiles/image/2009/06/202112272751.jpg
1.修改fckeditor/editor/filemanager/connectors/php/config.php
1)设置上传路径
$Config['Enabled'] = tr\u000Eue ;
$Config['UserFilesPath'] = '/upfiles/' ;
$Config['UserFilesAbsolutePath'] = $_SERVER['DOCUMENT_ROOT'].$Config['UserFilesPath'];
2)按时间自动生成目录 (如/upfiles/image/2009/06/202112272751.jpg)
$Config['AllowedExtensions']['File'] = array('7z', 'aiff', 'asf', 'avi', 'bmp', 'csv', 'doc', 'fla', 'flv', 'gif', 'gz', 'gzip', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4','mpc', 'mpeg', 'mpg', 'ods', 'odt', 'pdf', 'png', 'ppt', 'pxd', 'qt', 'ram', 'rar','rm', 'rmi', 'rmvb', 'rtf', 'sdc', 'sitd', 'swf', 'sxc', 'sxw', 'tar', 'tgz', 'tif', 'tiff', 'txt', 'vsd', 'wav', 'wma', 'wmv',
'xls', 'xml', 'zip') ;
$Config['DeniedExtensions']['File'] = array() ;
$cns_tmp_time= date("Y",time())."/".date("m", time()) ."/";
$Config['FileTypesPath']['File'] = $Config['UserFilesPath'] . 'file/' ; //这里什么也不添加
$Config['FileTypesAbsolutePath']['File']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'file/' ; //这里什么也不添加
$Config['QuickUploadPath']['File'] = $Config['UserFilesPath'] .'file/' .$cns_tmp_time ;
$Config['QuickUploadAbsolutePath']['File']= $Config['UserFilesAbsolutePath'].'file/' .$cns_tmp_time ;
$Config['AllowedExtensions']['Image'] = array('bmp','gif','jpeg','jpg','png') ;
$Config['DeniedExtensions']['Image'] = array() ;
$Config['FileTypesPath']['Image'] = $Config['UserFilesPath'] . 'image/' ;
$Config['FileTypesAbsolutePath']['Image']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'image/' ;
$Config['QuickUploadPath']['Image'] = $Config['UserFilesPath'] .'image/' .$cns_tmp_time;
$Config['QuickUploadAbsolutePath']['Image']= $Config['UserFilesAbsolutePath'].'image/' .$cns_tmp_time ;
$Config['AllowedExtensions']['Flash'] = array('swf','flv') ;
$Config['DeniedExtensions']['Flash'] = array() ;
$Config['FileTypesPath']['Flash'] = $Config['UserFilesPath'] . 'flash/' ;
$Config['FileTypesAbsolutePath']['Flash']= ($Config['UserFilesAbsolutePath'] == '') ? '' :$Config['UserFilesAbsolutePath'].'flash/' ;
$Config['QuickUploadPath']['Flash'] = $Config['UserFilesPath'] .'flash/' .$cns_tmp_time;
$Config['QuickUploadAbsolutePath']['Flash']= $Config['UserFilesAbsolutePath'].'flash/' .$cns_tmp_time ;
$Config['AllowedExtensions']['Media'] = array('aiff', 'asf', 'avi', 'bmp', 'fla', 'flv', 'gif', 'jpeg', 'jpg', 'mid', 'mov', 'mp3', 'mp4', 'mpc', 'mpeg', 'mpg', 'png', 'qt', 'ram', 'rm', 'rmi',
'rmvb', 'swf', 'tif', 'tiff', 'wav', 'wma', 'wmv') ;
$Config['DeniedExtensions']['Media'] = array() ;
$Config['FileTypesPath']['Media'] = $Config['UserFilesPath'] . 'media/' ;
$Config['FileTypesAbsolutePath']['Media']= ($Config['UserFilesAbsolutePath'] == '') ? '' : $Config['UserFilesAbsolutePath'].'media/' ;
$Config['QuickUploadPath']['Media'] = $Config['UserFilesPath'] .'media/' .$cns_tmp_time;
$Config['QuickUploadAbsolutePath']['Media']= $Config['UserFilesAbsolutePath'].'media/' .$cns_tmp_time ;
2.修改fckeditor/editor/filemanager/connectors/php/commands.php
1)修改自动生成随机文件名
a)添加函数
function GetRandID($prefix) {
//第一步:初始化种子
//microtime(); 是个数组
$seedstr =split(" ",microtime(),5);
$seed =$seedstr[0]*10000;
//第二步:使用种子初始化随机数发生器
srand($seed);
//第三步:生成指定范围内的随机数
$random =rand(1,10000);
$filename = date("dHis", time()).$random.'.'.$prefix;
return $filename;
}
b)应用函数
在函数function FileUpload( $resourceType, $currentFolder, $sCommand ) 中的if ( isset( $Config['SecureImageUploads'] ) ) 上面一行添加$sOriginalFileName = $sFileName = GetRandID($sExtension);