最新公告
  • 欢迎访问代码工坊,购买产品可享受在线工单服务!
  • 帝国CMS栏目ID+结合项伪静态,支持分页

    帝国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'].'">&nbsp;<b>'.$num.'</b> </a>&nbsp;&nbsp;';
    //上一页
    if($page<>0){
    $toppage='<a href="'.$lianjie.'0.html">'.$fun_r['startpage'].'</a>&nbsp;';
    $pagepr=$page-1;
    $prepage='<a href="'.$lianjie.$pagepr.'.html">'.$fun_r['pripage'].'</a>';
    }
    //下一页
    if($page!=$totalpage-1){
    $pagenex=$page+1;
    $nextpage='&nbsp;<a href="'.$lianjie.$pagenex.'.html">'.$fun_r['nextpage'].'</a>';
    $lastpage='&nbsp;<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.="&nbsp;".$is_1.$pagenum.$is_2;
    }
    $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
    return $returnstr;
    }
    ?>

    发表评论