一、前言:
帝國CMS提供了強大的自訂欄位處理函數功能,極大的方便了使用者對帝國CMS進行二次開發!
帝國CMS在增加/修改欄位時可以設定“後台增加資訊處理函數”、“後台修改資訊處理函數”、“前台增加資訊處理函數”、“前台修改資訊處理函數”,可以分別設定對字段內容處理的函數,對於對字段內容存放格式有特殊要求的模型用得比較多。今天我們來簡單講解下處理函數製作格式。字段處理函數的具體設定位置如下圖所示:
二、基本設定步驟:
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("從 {$dbtbpre}enewspublic limit 1 選擇 qaddtran,qaddtransize,qaddtranimgtype ");
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='[成員]'.$musername;
$infoid=$isadd==1?0:$id;
$empire->query("插入到{$dbtbpre}enewsfile(檔名,檔案大小,adduser,路徑, filetime,classid,no,type,id,cjid,fpath) 值('$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("從 {$dbtbpre}ecms_" 選擇 stb.$tbname." 其中 id ='$id'");
$ifr=$empire->fetch1("從{$dbtbpre}ecms_".$tbname."_data_".$ir[stb] 中選擇「.$f.」。 " 其中id='$id'");
$ifval=$ifr[$f];
}
else
{
$ir=$empire->fetch1("從{$dbtbpre}ecms_".$tbname." 中選擇“.$f.”,其中id='$id'");
$ifval=$ir[$f];
#}
if ($ifval)
{
DelYQTranFile($classid,$id,$ifval,$f);
}
}
#$value=str_replace($tfr['文件名'], $filename,$tfr['url']);
}
}
else
{
$value='';
}
return $ value;
}
以上是帝國CMS功能解密字段處理函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!