帝国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; } ?>
【免责声明】:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
【关于转载】:
本人玩采十年,专研各类采计划,如果想学习交流的可以联系QQ:4139783
【附】:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!
注:本站《整站源码》《Discuz插件》栏目中所有资源均来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!
-----------------------------------------------------------------------------------------------------------
【版权声明】:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------
帝国CMS模板网 » 帝国CMS栏目ID+结合项伪静态实现(支持分页完整代码)