很简单的集成ckeditor和ckfinder,调用非常简单
之前找了些集成ckeditor资料,自己总结了一份,发上来共享下。先说调用,只需在需要的控制器内使用$this->load->helper('ckeditor');
然后就可以在view中使用<?php echo ckeditor('textareaname',array(0,1,2,3),'初始化显示文字');?>;
就是这么简单。。。。
下面说下都需要哪些操作
1、下载官方的ckeditor和ckfinder文件,可以把里面没用的东西删除,进行瘦身,这个网上搜下很多的,把下载好的目录放到项目中,位置自己选定。
2、将两个目录中各自的类文件拷贝到application/library/目录下并重新命名,修改成CI支持的类文件名称。
data:image/png;base64,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
3、在CI的application/config/config.php文件末尾添加ckeditor和ckfinder的配置信息,代码如下:
/*
* ckeditor和ckfinder的配置选项
* ckeditorPath是ckeditor目录的位置
* ckfinderPath是ckfinder目录的位置
* editor_config为ckeditor的标题配置文件
*/
$config['ckeditorPath'] = 'public/ckeditor/';
$config['ckfinderPath'] = 'public/ckfinder/';
$config['editor_config'] = array(
'language'=> 'zh-cn', //默认语言
'skin' => 'kama', //皮肤方案kama(默认) office2003 v2 三种皮肤
'resize_enable' => 'false' //是否可拖动改变尺寸
);
$config['toolbar_Full'] = array(
array('Source','-','Save','NewPage','Preview','-','Templates'), //源码,保存,新建,预览,模版
array('TextColor','BGColor'),
array('Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'),
array('Styles','Format','Font','FontSize'),
array('Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'),
array('Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'),
array('Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField'),
array('Bold','Italic','Underline','Strike','-','Subscript','Superscript'),
array('NumberedList','BulletedList','-','Outdent','Indent','Blockquote'),
array('JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'),
array('Link','Unlink','Anchor'),
);
4、在application/helpers/目录下创建editor_helper.php文件,代码如下:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if( ! function_exists('ckeditor')){
/*
*name是创建的textarea的name名字
*type是工具栏调用功能,如果为空的话调用全部
*content是编辑器默认显示的内容,默认为空
*/
function ckeditor($name='content',$type = array(0,3,2,1),$content = ''){
$CI =& get_instance();
$config = $CI->config->config; //取得配置文件中的配置信息
if(!empty($config['ckeditorPath'])){
$ckeditorPath = base_url().$config['ckeditorPath']; //ckeditor路径
}
if(!empty($config['ckfinderPath'])){
$ckfinderPath = base_url().$config['ckfinderPath']; //ckfinder路径
}
if(!empty($config['editor_config'])){
$editor_config = $config['editor_config']; //配置文件
}else{
$editor_config = '';
}
if(!empty($config['toolbar_Full'])){ //头部功能建设置
if(is_array($type) && count($type) > 0){
foreach($type as $k => $v){
$editor_config['toolbar_Full'][] = $config['toolbar_Full'][$v];
}
}else{
$editor_config['toolbar_Full'] = '';
$editor_config['toolbar'] = 'Full';
}
}else{
$editor_config['toolbar'] = 'Full';
}
$CI->load->library('ckeditor'); //导入application/library/ckeditor.php文件
$CI->load->library('ckfinder'); //导入application/library/ckfinder.php文件
$CI->ckfinder->BasePath = $ckfinderPath; //初始化ckfinder路径
$CI->ckeditor->returnOutput = true; //设置返回输出
$CI->ckeditor->basePath = $ckeditorPath; //初始化ckeditor路径
$CI->ckfinder->SetupCKEditor($CI->ckeditor,$ckfinderPath);//ckfinder中自带集成ckeditor函数
$ckeditor = $CI->ckeditor->editor($name,$content,$editor_config); //生成ckeditor编辑器,带上传文件功能
return $ckeditor;
}
}
?>
5、修改ckfinder的上传文件路径,这里他本身引用的好像是决定路径。。刚在论坛里看到有个朋友已经解决了这个问题,这里就引用他的方法。
修改ckfinder目录下的config.php文件,找到$baseUrl这行代码,将其注释掉,并更换成代码:
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
unset($right_ulr);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/public/upload/';
6、ckfinder上传文件后采用的是原文件名,修改方法是在网上找的,
打开/ckfinder/core /connector/php/php5/CommandHandler/FileUpload.php 找到
$sUnsafeFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(CKFinder_Connector_Utils_Misc::mbBasename($uploadedFile['name']));
后面加上
$sExtension = CKFinder_Connector_Utils_FileSystem::getExtension($sUnsafeFileName);
$sUnsafeFileName=date('YmdHis').'.'.$sExtension;
7、上传权限问题,找到/ckfinder/config.php文件,第一个函数CheckAuthentication()是用来判断上传文件权限的,自己根据业务逻辑进行权限判断,这个函数返回true,就表示能够上传,返回false则不能上传文件。测试时可将其直接返回true。
function CheckAuthentication(){
return ture;
}
注:cifinder的商业使用是需要购买版权的,详细请查看ckfinder官网
本帖最后由 liya22315 于 2012-9-20 18:55 编辑
调用的方法和参数刚忘写了,这里给补上
控制器中
function index(){
$this->load->helper('ckeditor');
$this->load->view('index');
}
view视图中使用
<?php echo ckeditor('textareaname',array(0,1,2,3),'初始化显示文字');?>
第一个参数是生成的textarea的name名称,用于提交时获取其值。
第二个参数是配置文件中toolbar_Full这个数组里面的子类数组键值。
第三个是初始化的时候显示的内容,不过初始化后焦点获取到那了 值还显示,这个还没弄清楚怎么让初始化的值消失。。。欢迎拍砖 要给钱的谁用啊。。。 跟屁虫 发表于 2012-8-29 22:51 static/image/common/back.gif
要给钱的谁用啊。。。
。。。。不给钱也能用,只是少了一些功能而已。。。 他们官网上有说明 帮LZ勘误1
function index(){
$this->load->helper('ckeditor');
$this->load->view('index');
}
2、4、在application/helpers/目录下创建editor_helper.php文件,代码如下:
如果是$this->load->helper('ckeditor'),创建的是ckeditor_helper.php文件
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
unset($right_ulr);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/public/upload/';
请问LZ,这步不就是为了让$baseUrl的路劲一直在根目录下的/public/upload,为什么不直接定义$baseUrl = '/public/upload/';
★♂翼☆ 发表于 2012-9-18 09:23 static/image/common/back.gif
帮LZ勘误1
2、4、在application/helpers/目录下创建editor_helper.php文件,代码如下:
ckfinder默认的上传路径是相对于根目录的绝对路径,并不是网站的根目录。要是直接指定$baseUrl='/public/upload/';这样的话在windows下会跑到你存放盘符下面,如c:\public\upload,在linux下面也会直接跑到根目录下的/public/upload。上面的设置是存放到网站的根目录的。:D liya22315 发表于 2012-9-18 20:29 static/image/common/back.gif
ckfinder默认的上传路径是相对于根目录的绝对路径,并不是网站的根目录。要是直接指定$baseUrl='/public/ ...
for($i=0;$i<6;$i++)
循环六遍就能保证是在相对于根目录的绝对路劲? 本帖最后由 liya22315 于 2012-9-20 19:08 编辑
★♂翼☆ 发表于 2012-9-20 10:46 static/image/common/back.gif
for($i=0;$i
http://codeigniter.org.cn/forums ... viewthread&tid=8735
引自这里的地板回复面。。。。 你看下。。
二:config.php中的上传路径
一般而言,我们的程序都是本地测试后上传到服务器,本地的上传路径是已知的,而服务器可就不一定知道了,而且即使知道,一旦程序的路径有所变动,你的CKfinder还要重新配置,所以,一般而言,我都是用以下代码替代config.php中
$baseUrl那一行。
//var_dump($_SERVER['PHP_SELF']);
$right_ulr = explode('/',$_SERVER['PHP_SELF']);
$len = count($right_ulr);
for($i=0;$i<6;$i++)
unset($right_ulr);
//var_dump($right_ulr);
$baseUrl = implode('/', $right_ulr).'/upload/pic/';
解释下代码
在for语句中$i<6中的6是指
ckfinder/core/connector/php中的connector.php
离网站根目录的目录数量,这个得依据你的ckfinder在网站逻辑根目录的路径决定
循环1:去除connector.php
循环 2:去除php
循环 3:去除connector
循环 4:去除core
循环 5:去除ckfinder
循环 6:去除ckfinder所属的plugins目录(这里看你自己的网站目录咯)
@策策啃鸡腿 显示编辑器,填写值,怎么获取呢?
页:
[1]