phpcms v9提供了强大的模型管理功能,可以自定义字段,更符合自己的业务逻辑,那么如何二开一个单文件上传功能呢,跟着我一步一步操作,实现你需求的业务逻辑。
第一步 添加模型添加字段类型选项
在模型添加字段的配置文件目录./phpcms/modules/content/fields/fields.class.php 约 23行 位置,插入一行
'file'=>'文件上传',
第二步 先复制一份多文件上传的原始文件夹
打开目录 ./phpcms/modules/content/fields/downfile/所有内容,拷贝到新建file目录./phpcms/modules/formguide/fields/file下。
复制出来的文件目录结构如下:
第三步 修改方法名,防止重名导致报错
将form.inc.php、input.inc.php、output.inc.php三个文件的方法名 downfile 改成 file 。form.inc.php还需替换代码 ,下面会有详细介绍。
注:这三个文件的方法名要也目录名,还有定义的添加模型添加字段类型相同(第一步的名字file)
function file($field, $value, $fieldinfo) {
//内容区原封不动,只改方法名
}
第四步 替换几个文件代码
1、复制以下代码替换field_add_form.inc.php文件的代码:
$server_list = getcache('downservers','commons');
foreach($server_list as $_r) if (in_array($_r['siteid'],array(0,$this->siteid))) $str .=''.$_r['sitename'].'';
?>
允许上传的文件类型 | |
是否从已上传中选择 | 是 否 |
允许同时上传的个数 |
2、复制以下代码替换field_edit_form.inc.php文件代码:
defined('IN_PHPCMS') or exit('No permission resources.');
$server_list = getcache('downservers','commons');
foreach($server_list as $_r) if (in_array($_r['siteid'],array(0,$this->siteid))) $str .=''.$_r['sitename'].'';
?>
允许上传的文件类型 | " size="40" class="input-text"> |
是否从已上传中选择 | > 是 > 否 |
允许同时上传的个数 | " size=3> |
这两步是去除一些无用的标签,可以直接复制 或参考以上的代码修复即可。
3、最重要的是替换form.inc.php里面的代码:
注:主要功能是由这个文件来实现的,一定要替换对。
function file($field, $value, $fieldinfo) {
$list_str = $str = '';
extract(string2array($fieldinfo['setting']));
$string = '';
if(!defined('IMAGES_INIT')) {
$str = '';
define('IMAGES_INIT', 1);
}
$authkey = upload_key("$upload_number,$upload_allowext,$isselectimage");
$string .= $str." catid','{$authkey}')\"/ value='上传视频'>";
return $string;
}
4、修改输入写入数据库方法文件input.inc.php,使用如下代码:
function file($field, $value) {
//取得下载文件路径返回
$result = $value;
return $result;
}
5、修改输出方法 output.inc.php,使用如下代码:
function file($field, $value) {
return $value;
}
第五步 修改\statics\js\swfupload\swf2ckeditor.js 文件
上面几步完成后,即可实现上传功能 不过为了直接改成自己想要的上传文件路径,还需要修改一下js文件。
打开文件找到约 33行 将
var new_filepath = in_content[0].replace(uploadurl,'/');
替换为:
var new_filepath = in_content[0];
即可。
注:phpcms默认的上传文件大小是2M,可以登录后台,点击设置->站点管理->修改 ,还可以改允许上传的文件类型,以视频为例 增加了mp4的类型,可以根据你的实际需求增加。
直接预览模型测试上传看一下效果吧!!!
效果如下: