帝国cms栏目自定义字段(帝国cms数据表)
前言:添加/修改字段时,可以设置“后台信息处理函数”、“后台信息修改处理函数”、“前台信息处理函数”、“前台修改信息处理函数”,可以设置处理字段的函数分别内容。常用于对字段内容的存储格式有特殊要求的模型。今天我们简单讲解一下处理函数产生格式。
基本设置步骤: 1、编写处理函数; 2、将函数复制到e/class/userfun.php文件内容中; 3. 修改字段设置处理函数名称。字段处理函数格式:
functionuser_FieldFun($mid,$f,$isadd,$isq,$value,$cs){return$value;}参数说明: user_FieldFun: 函数名$mid: 系统型号ID $f: 字段名$isadd: 值为1当值为0时,表示修改信息。 $isq:值为0时,为后台处理;当值为1时,为前台处理。 $value:字段的原始内容。 $cs:字段的附加参数,在字段处理函数中设置的参数。内容字段处理函数示例: 例一:标题前面自动添加“[EmpireCMS]” 后台字段函数设置:user_AddTitle
functionuser_AddTitle($mid,$f,$isadd,$isq,$value,$cs){$value='[EmpireCMS]'.$value;return$value;}示例2:标题内容为writer和befrom fields 后台字段功能设置:user_TogTitle title字段显示HTML代码:input type='hidden' name='title' value='test' (注:因为title是必填项,所以必须给定一个初始值,这样才能显示不会提示内容为空)
functionuser_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”变量)
functionuser_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('selectqaddtran,qaddtransize ,qaddtranimgtypefrom{$dbtbpre}enewspubliclimit1');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]['名称'],$_FILES[$filetf]['类型'],$_FILES[$filetf]['大小'],$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-dH:i:s') ;$filesize=@filesize($filer['file']);$filename=GetFilename(str_replace(ECMS_PATH,'',$filer['file']));$adduser='[成员]'.$musername; $infoid=$isadd==1?0:$id;$empire-query('插入{$dbtbpre}enewsfile(文件名,文件大小,adduser,路径,文件时间,classid,否,类型,id,cjid,fpath)值( '$filename','$filesize','$adduser','$tfr[filepath]','$filetime','$classid','['.$f.']'.addslashes(RepPostStr($_POST) [标题])).'','$type','$infoid','$filepass','$public_r[fpath]');');if($isadd==0){$tbname=$emod_r [$mid]['tbname'];if(strstr($emod_r[$mid]['tbdataf'],','.$f.',')){$ir=$empire-fetch1('selectstbfrom{ $dbtbpre}ecms_'.$tbname.'whereid='$id'');$ifr=$empire-fetch1('select'.$f.'from{$dbtbpre}ecms_'.$tbname.'_data_'. $ir[stb].'whereid='$id'');$ifval=$ifr[$f];}else{$ir=$empire-fetch1('select'.$f.'from{$dbtbpre} ecms_'.$tbname.'whereid='$id'');$ifval=$ir[$f];}if($ifval){DelYQTranFile($classid,$id,$ifval,$f);}} $value=str_replace($tfr['filename'],$filename,$tfr['url']);}}else{$value='';}return$value;}处理函数可以实现很多非常复杂的字段以上只是内容存储格式要求的几个简单例子,更多的还需要用户自己去实践。