Thinkphp整合ckedirot、ckfinder完成在线编辑功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网上介绍thinkphp整合ckeditor和ckfinder的文档确实很多,不过那些介绍确实是比较零散的,大部分都是全部操作的一部分(我就被那些文档毒害了,花了很多时间仍然没有成功整合起来),于是我花了一个下午的时间通过原生的方式先摸通它们是怎么整合到一起的,然后在推导一下,成功的整合到了thinkphp中。
言归正传,下面是操作方式,图文并茂的哦,亲~~~~!!!
我使用的是以下这几个版本的工具包,都是刚从官网下载的,应该比较新版(创建时间显示得很清楚)
我那demo的路径是比较深的,童鞋们可以根据自己情况来实际修改
把thinkphp的源码包解压进去,然后搭建一个简单的tp程序
把ckeditor和ckfinder解压进thinkphp中的vendor中
我们先整合editor:
打开ckeditor文件夹中的ckeditor_php5.php [如果你用php4,那就打开ckeditor_php4.php]
找到大概38行public $basePath;
把ckeditor存在的地址(从Apache htdoc开始的真实路径[网站根目录,如果你改了webroot,则从你改了的webroot那里开始])赋值给basepath
(有一个找路径的小技巧,直接用浏览器访问到ckeditor的目录,端口号后面的路径就是你的basepath路径啦!!!)
找到同一路径(ckeditor)下的config.js,设置好编辑器的大小、工具栏、字体等配置信息,具体设置可以参考我共享出来的那个demo,里面有。
(一坨的东西)
然后在thinphp中调用(贴个图出来算了,代码demo中有)
弄弄后台:
再弄弄前台(务必采用post表单接收)
至此。
,ckeditor我们已经整合完毕了。
整合ckfinder
整合完ckeditor之后,我们仅仅拥有富文本编辑功能,像什么本地上传图片、flash等功能都是没有的。
因此,我们还需要整合一款插件ckfinder。
Ckfinder插件的配置有点繁琐,因此童鞋们配置的时候要多加留意。
首先,我们需要让ckeditor支持ckfinder插件。
打开ckeditor中的config.js
在
CKEDITOR.editorConfig = function( config )
{
}
中加入一下内容(还是贴个图算了,代码demo中有)
(注意哪些路径,就是红色的地方,同样需要从htdoc的目录下开始,一直到你的ckfinder中)[因为这里没有经过thinkphp的入口文件,所以是不会受thinkphp 的路径解析影响,因此童鞋们不必害怕thinkphp会把”/”或者是”./”解析到你的项
目目录下]
配置config.php
打开ckfinder中的config.php
找到大概21行:
function CheckAuthentication() 把返回值从false改为true [打开上传功能]
找到$baseUrl (63行左右)
把你放上传文件的文件夹的路径的地址赋给$baseUrl (也是从htdoc根目录下,一直到你放上传文件的目录,记得后面要加“/”)
(比如我把它放在项目中的public中的uploads)[目录解析同样不受thinkphp的影响]
找到$baseDir = resolveUrl($baseUrl); (82行左右)
把你放上传文件的磁盘物理地址赋给$baseDir
(可选配置)
如果您的网站上传文件比较多,文件都在一个目录下的话,对文件性能可能不是很思想,这时我们按/upload/yyyy/mm/dd/格式生成目录。
找到大概第195行,
在'url' => $baseUrl . 'files',和'directory' => $baseDir . 'files', 末尾加上."/".date('Y')."/".date('m')."/".date('d')
(包括file、image、flash中,我贴个图出来,具体代码demo中也有)
配置FileUpload.php
通过以上的配置,ckeditor基本上就可以成功的上传本地文件的了,但是,毕竟是外国的东西,对中文的支持确实是存在问题的,我测试了一下,上传一个中文名的图片或者什么的,通常情况下会发生乱码文件名,而且,很多用户会上传一些比如“00.jpg”、“0.jpg”之类文件名相同概率特别高的文件,因此我们有必要进行回避一下,那最好的办法就是把上传的文件进行重命名。
打开ckfinder\core\connector\php\php5\CommandHandler中的FileUpload.php
找到大概第60-62行
在它下面添加
$sExtension=CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);
$sFileName =date('His').mt_rand(0,10000).'.'.$sExtension;
保存所有修改~~~
哈哈!!!大功告成!!!!
测试一下
已经多出了一个上传功能
上传一个图片之后,是能够上传并插入图片的:
点击提交,看看提交过来什么
一个数组,剩下的童鞋们应该懂如何通过$_POST来接收并处理了~~~~~!!!!!
好的!!!就到这里啦~~写得不好的话不要吐槽哦!!!!!
Author :马健乐
Date :2012/02/02。