前言:
增加/修改字段时可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”、“前台修改信息处理函数”,可以分别设置对字段内容处理的函数,对于对字段内容存放格式有特殊要求的模型用得比较多。今天我们再简单讲解下处理函数制作格式。
基本设置步骤:
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 ; } |
处理函数可以实现很多非常复杂的字段内容存放格式需求,上面只是举了几个简单的例子,更多需要用户去实践。
新闻热点
疑难解答