帝國CMS欄目ID+結合項偽靜態,支持分頁
本文關鍵字詞:結合項偽靜態,帝國CMS結合項
跟帝國官方的差不多,只是偽靜態了。
沒有官方支持的篩選項多,只支持:欄目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代碼:
1 <?php 2 //顯示結合項篩選選項 3 function user_showfield($ecms=0){ 4 global $public_r; 5 //------- 函數參數設置開始 ----- 6 //要顯示的結合項字段列表,多個字段用半角逗號“,”隔開 7 $fieldandvar='myarea,sex,age'; 8 //字段顯示選項設置,多項用雙“#”號隔開,格式:選項說明|==|內容1,值1##內容2,值2 9 $fieldandval=array(); 10 $fieldandval['myarea']='<b>地區:</b>|==|##不限,0##東城,1##朝陽,2##崇文,3##宣武,4##海淀,5##豐台,6'; 11 $fieldandval['sex']='<b>性別:</b>|==|##不限,0##男,1##女,2##人妖,3'; 12 $fieldandval['age']='<b>年齡:</b>|==|##不限,0##1-10,1##11-20,2##21-30,3##31-40,4##41-50,5##50歲以上,6'; 13 //正常鏈接樣式 14 $fieldandcss='fieldandcss'; 15 //已選的選項鏈接樣式 16 $changefieldandcss='changefieldandcss'; 17 //字段與字段的顯示間隔符,格式:開始顯示字符|結束顯示字符 18 $fieldexp='<table><tr><td>|</td></tr></table>'; 19 //選項與選項的顯示間隔符,格式:開始顯示字符|結束顯示字符 20 $valexp='| '; 21 //------- 函數參數設置結束 ----- 22 //間隔字符 23 $fieldexpr=explode('|',$fieldexp); 24 $valexpr=explode('|',$valexp); 25 //輸出選項 26 $fr=explode(',',$fieldandvar); 27 $fcount=count($fr); 28 $allstr=''; 29 $urladd=''; 30 for($i=0;$i<$fcount;$i++){ 31 $field=$fr[$i]; 32 //選項鏈接 33 $getval='0'; 34 if($_GET[$field]){ 35 $getval=htmlspecialchars($_GET[$field],ENT_QUOTES); 36 } 37 //選項說明 38 $vsayr=explode('|==|',$fieldandval[$field]); 39 //選項內容 40 $valallstr=''; 41 $vr=explode('##',$vsayr[1]); 42 $vcount=count($vr); 43 for($vi=0;$vi<$vcount;$vi++){ 44 $vtr=explode(',',$vr[$vi]); 45 if($getval==$vtr[1]){ 46 $css=$changefieldandcss; 47 }else{ 48 $css=$fieldandcss; 49 } 50 $trueurl=$field.'|'.$vtr[1]; 51 $url=Return_Url($fr,$trueurl); 52 $valallstr.=$valexpr[0].'<a href="'.$public_r[newsurl].$url.'" class="'.$css.'">'.$vtr[0].'</a>'.$valexpr[1]; 53 } 54 $allstr.=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1]; 55 } 56 echo $allstr; 57 } 58 //結合項偽靜態返回地址。 59 function Return_Url($zd_arr,$trueurl){ 60 global $classid,$page,$public_r; 61 $url_zuhe=''; 62 if(strpos($_SERVER[REQUEST_URI],'.html') && $_GET['ph']==1){ 63 $url_zuhe=$_SERVER[REQUEST_URI]; 64 }else{ 65 for($i=0;$i<count($zd_arr);$i++){ 66 $url_zdzh.='0-'; 67 } 68 $url_zuhe='/'.$classid.'-'.$url_zdzh.$page.'.html'; 69 } 70 $ser_url=explode('-',$url_zuhe); 71 $url_arr=explode('|',$trueurl); 72 $ser_url[count($ser_url)-1]='0.html';//如果有分頁的話,篩選后分頁是0,免得不是第一頁沒數據顯示 73 if(is_array($zd_arr)){ 74 foreach($zd_arr as $key=>$val){ 75 if($url_arr[0]==$val){ 76 $ser_url[$key+1]=$url_arr[1]; //因為有classis所有key要加1 77 } 78 } 79 } 80 foreach($ser_url as $val){ 81 $url.=$val.'-'; 82 } 83 return substr(substr($url,0,-1),1); 84 } 85 //結合項分頁 86 function page_sx($num,$line,$page_line,$start,$page,$search){ 87 global $fun_r; 88 if($num<=$line){ 89 return ''; 90 } 91 $search=RepPostStr($search,1); 92 $lj_arr=explode('-',$search); 93 $lj_arr[count($lj_arr)-1]='';//去掉頁數.html 94 foreach ($lj_arr as $val){ 95 $lianjie.=$val.'-'; 96 } 97 $lianjie=substr($lianjie,0,-1); 98 $url=eReturnSelfPage(0).'?page'; 99 $snum=2;//最小頁數 100 $totalpage=ceil($num/$line);//取得總頁數 101 $firststr='<a title="'.$fun_r['trecord'].'"> <b>'.$num.'</b> </a> '; 102 //上一頁 103 if($page<>0){ 104 $toppage='<a href="'.$lianjie.'0.html">'.$fun_r['startpage'].'</a> '; 105 $pagepr=$page-1; 106 $prepage='<a href="'.$lianjie.$pagepr.'.html">'.$fun_r['pripage'].'</a>'; 107 } 108 //下一頁 109 if($page!=$totalpage-1){ 110 $pagenex=$page+1; 111 $nextpage=' <a href="'.$lianjie.$pagenex.'.html">'.$fun_r['nextpage'].'</a>'; 112 $lastpage=' <a href="'.$lianjie.($totalpage-1).'.html">'.$fun_r['lastpage'].'</a>'; 113 } 114 $starti=$page-$snum<0?0:$page-$snum; 115 $no=0; 116 for($i=$starti;$i<$totalpage&&$no<$page_line;$i++){ 117 $no++; 118 if($page==$i){ 119 $is_1="<b>"; 120 $is_2="</b>"; 121 }else{ 122 $is_1='<a href="'.$lianjie.$i.'.html">'; 123 $is_2="</a>"; 124 } 125 $pagenum=$i+1; 126 $returnstr.=" ".$is_1.$pagenum.$is_2; 127 } 128 $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage; 129 return $returnstr; 130 } 131 ?>