帝国cms字段处理函数说明
2018-03-26 站长 站长日志
前言:
增加/修改字段时可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”、“前台修改信息处理函数”,可以分别设置对字段内容处理的函数,对于对字段内容存放格式有特殊要求的模型用得比较多。今天我们再简单讲解下处理函数制作格式。
基本设置步骤:
1、编写处理函数;
2、将函数复制到e/class/userfun.php文件内容里;
3、修改字段设置处理函数名称。
字段处理函数格式:
1 2 3 |
function user_FieldFun( $mid , $f , $isadd , $isq , $value , $cs ){
return $value ;
}
|
参数说明:
user_FieldFun:函数名
$mid:系统模型ID
$f:字段名
$isadd:值为1时是增加信息;值为0时是修改信息
$isq:值为0时是后台处理;值为1时是前台处理
$value:字段原内容
$cs:字段附加参数,字段处理函数处设置的参数内容
字段处理函数范例:
例子1:自动在标题前面加“[EmpireCMS]”字样
后台字段函数设置:user_AddTitle
1 2 3 4 |
function user_AddTitle( $mid , $f , $isadd , $isq , $value , $cs ){
$value = '[EmpireCMS]' . $value ;
return $value ;
}
|
例子2:标题内容由writer和befrom字段的组合
后台字段函数设置:user_TogTitle
标题字段显示HTML代码:<input type="hidden" name="title" value="test">
(说明:因为标题是必填项,所以要给初始值才不会提示内容空)
1 2 3 4 |
function user_TogTitle( $mid , $f , $isadd , $isq , $value , $cs ){
$value = $_POST [ 'writer' ]. $_POST [ 'befrom' ];
return $value ;
}
|
例子3:上传图片并自动生成缩图
后台字段函数设置:user_TranImgAuto##170,120
(说明:后台的参数170表示缩图宽度,120为缩图高度)
上传图片字段显示HTML代码:<input type="file" name="titlepicimgrs" size="45">
(说明:变量名用“字段名”+imgrs,即跟函数中的“$filetf”变量对应)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
function user_TranImgAuto( $mid , $f , $isadd , $isq , $value , $cs ){
global $empire , $dbtbpre , $public_r , $emod_r , $class_r , $tranpicturetype , $musername ;
$filetf = $f . 'imgrs' ; //变量名
if (! $_FILES [ $filetf ][ 'name' ])
{
return $value ;
}
$classid =(int) $_POST [ 'classid' ];
$id =(int) $_POST [ 'id' ];
$filepass =(int) $_POST [ 'filepass' ];
$filetype =GetFiletype( $_FILES [ $filetf ][ 'name' ]);
$pr = $empire ->fetch1( "select qaddtran,qaddtransize,qaddtranimgtype from {$dbtbpre}enewspublic limit 1" );
if (! $pr [ 'qaddtran' ])
{
printerror( "CloseQTranPic" , "" ,1);
}
if (! strstr ( $pr [ 'qaddtranimgtype' ], "|" . $filetype . "|" ))
{
printerror( "NotQTranFiletype" , "" ,1);
}
if ( $_FILES [ $filetf ][ 'size' ]> $pr [ 'qaddtransize' ]*1024)
{
printerror( "TooBigQTranFile" , "" ,1);
}
if (! strstr ( $tranpicturetype , ',' . $filetype . ',' ))
{
printerror( "NotQTranFiletype" , "" ,1);
}
$tfr =DoTranFile( $_FILES [ $filetf ][ 'tmp_name' ], $_FILES [ $filetf ][ 'name' ], $_FILES [ $filetf ][ 'type' ], $_FILES [ $filetf ][ 'size' ], $classid );
if ( $tfr [ 'tran' ])
{
$csr = explode ( ',' , $cs );
$maxwidth = $csr [0];
$maxheight = $csr [1];
$yname = $tfr [ 'yname' ];
$name = $tfr [ 'name' ];
include_once (ECMS_PATH. 'e/class/gd.php' );
//生成缩图
$filer =ResizeImage( $yname , $name , $maxwidth , $maxheight , $public_r [ 'spickill' ]);
DelFiletext( $yname );
if ( $filer [ 'file' ])
{
//写入数据库
$type =1;
$filetime = date ( "Y-m-d H:i:s" );
$filesize =@ filesize ( $filer [ 'file' ]);
$filename =GetFilename( str_replace (ECMS_PATH, '' , $filer [ 'file' ]));
$adduser = '[Member]' . $musername ;
$infoid = $isadd ==1?0: $id ;
$empire ->query( "insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$filename','$filesize','$adduser','$tfr[filepath]','$filetime','$classid','[" . $f . "]" . addslashes (RepPostStr( $_POST [title])). "','$type','$infoid','$filepass','$public_r[fpath]');" );
if ( $isadd ==0)
{
$tbname = $emod_r [ $mid ][ 'tbname' ];
if ( strstr ( $emod_r [ $mid ][ 'tbdataf' ], ',' . $f . ',' ))
{
$ir = $empire ->fetch1( "select stb from {$dbtbpre}ecms_" . $tbname . " where id='$id'" );
$ifr = $empire ->fetch1( "select " . $f . " from {$dbtbpre}ecms_" . $tbname . "_data_" . $ir [stb]. " where id='$id'" );
$ifval = $ifr [ $f ];
}
else
{
$ir = $empire ->fetch1( "select " . $f . " from {$dbtbpre}ecms_" . $tbname . " where id='$id'" );
$ifval = $ir [ $f ];
}
if ( $ifval )
{
DelYQTranFile( $classid , $id , $ifval , $f );
}
}
$value = str_replace ( $tfr [ 'filename' ], $filename , $tfr [ 'url' ]);
}
}
else
{
$value = '' ;
}
return $value ;
}
|
处理函数可以实现很多非常复杂的字段内容存放格式需求,上面只是举了几个简单的例子,更多需要用户去实践。