帝國CMS欄目ID+結合項偽靜態+支持分頁完整代碼!
跟帝國官方的差不多,只是偽靜態了。
沒有官方支持的篩選項多,只支持:欄目ID,篩選項,分頁。需要其他比如:專題ID模型id模版ID排序等等,可以自己修改。
說明:
一:建立字段時候要用:值==名稱的形式。不要用0,0留著給不限使用。
二:需要在e/action/ListInfo.php加幾行代碼,判斷偽靜態使用分頁函數的
找到$listpage=page1($num,$line,$page_line,$start,$page,$search);
在下面添加:
//如果啟用結合項并且偽靜態的分頁
if($_GET['ph']==1 && strpos($_SERVER['REQUEST_URI'],'.html')){
$listpage=page_sx($num,$line,$page_line,$start,$page,$_SERVER[REQUEST_URI]);
}
三:把userfun.php的函數復制到你的userfun.php。如果沒修改過,可以覆蓋。
四:偽靜態規則:
apache的
RewriteRule ^10-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /e/action/ListInfo.php?classid=10&ph=1&myarea=$1&sex=$2&age=$3&page=$4 [L]
五:在需要顯示的欄目模版加:<?=user_showfield();?>
APACHE的,IIS需要判斷$_SERVER[REQUEST_URI]
userfun.php代碼:
<?php
//顯示結合項篩選選項
function user_showfield($ecms=0){
global $public_r;
//------- 函數參數設置開始 -----
//要顯示的結合項字段列表,多個字段用半角逗號“,”隔開
$fieldandvar='myarea,sex,age';
//字段顯示選項設置,多項用雙“#”號隔開,格式:選項說明|==|內容1,值1##內容2,值2
$fieldandval=array();
$fieldandval['myarea']='<b>地區:</b>|==|##不限,0##東城,1##朝陽,2##崇文,3##宣武,4##海淀,5##豐臺,6';
$fieldandval['sex']='<b>性別:</b>|==|##不限,0##男,1##女,2##人妖,3';
$fieldandval['age']='<b>年齡:</b>|==|##不限,0##1-10,1##11-20,2##21-30,3##31-40,4##41-50,5##50歲以上,6';
//正常鏈接樣式
$fieldandcss='fieldandcss';
//已選的選項鏈接樣式
$changefieldandcss='changefieldandcss';
//字段與字段的顯示間隔符,格式:開始顯示字符|結束顯示字符
$fieldexp='<table><tr><td>|</td></tr></table>';
//選項與選項的顯示間隔符,格式:開始顯示字符|結束顯示字符
$valexp='| ';
//------- 函數參數設置結束 -----
//間隔字符
$fieldexpr=explode('|',$fieldexp);
$valexpr=explode('|',$valexp);
//輸出選項
$fr=explode(',',$fieldandvar);
$fcount=count($fr);
$allstr='';
$urladd='';
for($i=0;$i<$fcount;$i++){
$field=$fr[$i];
//選項鏈接
$getval='0';
if($_GET[$field]){
$getval=htmlspecialchars($_GET[$field],ENT_QUOTES);
}
//選項說明
$vsayr=explode('|==|',$fieldandval[$field]);
//選項內容
$valallstr='';
$vr=explode('##',$vsayr[1]);
$vcount=count($vr);
for($vi=0;$vi<$vcount;$vi++){
$vtr=explode(',',$vr[$vi]);
if($getval==$vtr[1]){
$css=$changefieldandcss;
}else{
$css=$fieldandcss;
}
$trueurl=$field.'|'.$vtr[1];
$url=Return_Url($fr,$trueurl);
$valallstr.=$valexpr[0].'<a href="'.$public_r[newsurl].$url.'" class="'.$css.'">'.$vtr[0].'</a>'.$valexpr[1];
}
$allstr.=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1];
}
echo $allstr;
}
//結合項偽靜態返回地址。
function Return_Url($zd_arr,$trueurl){
global $classid,$page,$public_r;
$url_zuhe='';
if(strpos($_SERVER[REQUEST_URI],'.html') && $_GET['ph']==1){
$url_zuhe=$_SERVER[REQUEST_URI];
}else{
for($i=0;$i<count($zd_arr);$i++){
$url_zdzh.='0-';
}
$url_zuhe='/'.$classid.'-'.$url_zdzh.$page.'.html';
}
$ser_url=explode('-',$url_zuhe);
$url_arr=explode('|',$trueurl);
$ser_url[count($ser_url)-1]='0.html';//如果有分頁的話,篩選后分頁是0,免得不是第一頁沒數據顯示
if(is_array($zd_arr)){
foreach($zd_arr as $key=>$val){
if($url_arr[0]==$val){
$ser_url[$key+1]=$url_arr[1]; //因為有classis所有key要加1
}
}
}
foreach($ser_url as $val){
$url.=$val.'-';
}
return substr(substr($url,0,-1),1);
}
//結合項分頁
function page_sx($num,$line,$page_line,$start,$page,$search){
global $fun_r;
if($num<=$line){
return '';
}
$search=RepPostStr($search,1);
$lj_arr=explode('-',$search);
$lj_arr[count($lj_arr)-1]='';//去掉頁數.html
foreach ($lj_arr as $val){
$lianjie.=$val.'-';
}
$lianjie=substr($lianjie,0,-1);
$url=eReturnSelfPage(0).'?page';
$snum=2;//最小頁數
$totalpage=ceil($num/$line);//取得總頁數
$firststr='<a title="'.$fun_r['trecord'].'"> <b>'.$num.'</b> </a> ';
//上一頁
if($page<>0){
$toppage='<a href="'.$lianjie.'0.html">'.$fun_r['startpage'].'</a> ';
$pagepr=$page-1;
$prepage='<a href="'.$lianjie.$pagepr.'.html">'.$fun_r['pripage'].'</a>';
}
//下一頁
if($page!=$totalpage-1){
$pagenex=$page+1;
$nextpage=' <a href="'.$lianjie.$pagenex.'.html">'.$fun_r['nextpage'].'</a>';
$lastpage=' <a href="'.$lianjie.($totalpage-1).'.html">'.$fun_r['lastpage'].'</a>';
}
$starti=$page-$snum<0?0:$page-$snum;
$no=0;
for($i=$starti;$i<$totalpage&&$no<$page_line;$i++){
$no++;
if($page==$i){
$is_1="<b>";
$is_2="</b>";
}else{
$is_1='<a href="'.$lianjie.$i.'.html">';
$is_2="</a>";
}
$pagenum=$i+1;
$returnstr.=" ".$is_1.$pagenum.$is_2;
}
$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
return $returnstr;
}
?>