### [关于帝国CMS6.0功能解密之字段处理函数](https://www.prosaas.cn/article/1442) **Published:** 2020-06-12T07:07:02 **Author:** 5201314 **Excerpt:** 下面由帝国cms教程栏目给大家介绍国CMS6.0功能解密之字段处理函数,希望对需要的朋友有所帮助!前言:增加/… 下面由**帝国cms**教程栏目给大家介绍国CMS6.0功能解密之字段处理函数,希望对需要的朋友有所帮助! ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212115825663.jpg) 前言: 增加/修改字段时可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”、“前台修改信息处理函数”,可以分别设置对字段内容处理的函数,对于对字段内容存放格式有特殊要求的模型用得比较多。今天我们再简单讲解下处理函数制作格式。 ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212115825327.png) 基本设置步骤: 1、编写处理函数; 2、将函数复制到e/class/userfun.php文件内容里; 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 function user\_AddTitle($mid,$f,$isadd,$isq,$value,$cs){ $value='\[EmpireCMS\]'.$value; return $value; } 例子2:标题内容由writer和befrom字段的组合 后台字段函数设置:user\_TogTitle 标题字段显示HTML代码: (说明:因为标题是必填项,所以要给初始值才不会提示内容空) function user\_TogTitle($mid,$f,$isadd,$isq,$value,$cs){ $value=$\_POST\['writer'\].$\_POST\['befrom'\]; return $value; } 例子3:上传图片并自动生成缩图 后台字段函数设置:user\_TranImgAuto##170,120 (说明:后台的参数170表示缩图宽度,120为缩图高度) 上传图片字段显示HTML代码: (说明:变量名用“字段名”+imgrs,即跟函数中的“$filetf”变量对应) 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; } 处理函数可以实现很多非常复杂的字段内容存放格式需求,上面只是举了几个简单的例子,更多需要用户去实践。 更多帝国cms技术文章,请访问**帝国cms二次开发**栏目! 以上就是关于帝国CMS6.0功能解密之字段处理函数的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** 帝国CMS ---