### [帝国CMS功能解密之字段处理函数详解](https://www.prosaas.cn/article/5182) **Published:** 2019-11-25T07:07:16 **Author:** 5201314 **Excerpt:** 一、前言:帝国CMS提供了强大的自定义字段处理函数功能,极大的方便了用户对帝国CMS进行二次开发!帝国CMS在… ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212123723166.jpg) 一、前言: 帝国CMS提供了强大的自定义字段处理函数功能,极大的方便了用户对帝国CMS进行二次开发! 帝国CMS在增加/修改字段时可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”、“前台修改信息处理函数”,可以分别设置对字段内容处理的函数,对于对字段内容存放格式有特殊要求的模型用得比较多。今天我们来简单讲解下处理函数制作格式。字段处理函数的具体设置位置如下图所示: ![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212123723610.jpg) 二、基本设置步骤: 1、编写处理函数; 2、将函数复制到e/class/userfun.php文件内容里; 3、修改字段设置处理函数名称。 三、字段处理函数格式: 代码如下: function user\_FieldFun($mid,$f,$isadd,$isq,$value,$cs){ return $value; } 参数说明: user\_FieldFun:函数名 $mid:系统模型ID $f:字段名 $isadd:值为0时是增加信息;值为1时是修改信息 $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 ''; } $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功能解密之字段处理函数详解的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** 帝国CMS ---