linhuiming
因上努力,果上随缘

帝国CMS结合项插件及常见问题汇总

  • LinHuiMing

官方教程及插件下载:http://bbs.phome.net/showthread-31-201928-0.html

一、实现已选择条件和删除取消已选择

打开 userfun.php在最后面找到“echo $allstr;”后面一行加入:

foreach ($_GET as $key=>$val){                if($val && in_array($key, $fr)){                        $url_this=$key.'='.urlencode($val);                        $url=str_replace($url_this,'',$_SERVER[REQUEST_URI]);                        $tj='已选择条件:';                        $yixuan.='<a class="del_jhx" href="'.$url.'">'.$val.'x</a> ';                                }        }        echo $tj.$yixuan;

CSS样式:.del_jhx{ border:1px solid #0CF; padding:2px;}

二、帝国CMS结合项URL优化

帝国官方结合项如果同一个字段不同值点击两次以上url就会出现重复的参数,当然对功能是没有影响的,感觉不大美观!

优化前:/e/action/ListInfo.php?&classid=19&orderby=psalenum&myorder=1&ph=1&classid=19&pbrand=27&orderby=psalenum&myorder=1&myorder=1

优化后:/e/action/ListInfo.php?classid=19&orderby=psalenum&myorder=1&ph=1&pbrand=27

在官方的结合项的函数方法 echo $allstr; 这行代码的前面插入以下代码即可:

  //新增代码start-----
preg_match_all ('/<a href=\"(.*?)\".*?>(.*?)<\/a>/i',$allstr,$matches);
        for($i=0;$i<count($matches[1]);$i++){
                 $url = $matches[1][$i];
                 $parts = parse_url($url);
                 $query = explode('&', $parts[query]);
                 $output=array();
                 foreach ($query as $key => $value) {
                         if($value){
                            $params = explode('=', $value);
                            if($params[0]){
                                    $output[$params[0]]=urldecode($params[1]);
                            }
                        }
                 }
              $newurl = $parts[path].'?'.http_build_query($output);
                 $allstr = str_replace('href="'.$url.'"', 'href="'.$newurl.'"',  $allstr);
        }
    //新增代码end-----

如果有多个结合项,可以把上面的代码放到一个函数里面调用方法就更加简单了,只需把 echo $allstr; 替换成 echo beautifyUrl($allstr); 即可

function beautifyUrl($allstr){
    //新增代码start-----
    preg_match_all ('/<a href=\"(.*?)\".*?>(.*?)<\/a>/i',$allstr,$matches);
    for($i=0;$i<count($matches[1]);$i++){
         $url = $matches[1][$i];
         $parts = parse_url($url);
         $query = explode('&', $parts[query]);
         $output=array();
         foreach ($query as $key => $value) {
            if($value){
                $params = explode('=', $value);
                if($params[0]){
                    $output[$params[0]]=urldecode($params[1]);
                }
            }
         }
          $newurl = $parts[path].'?'.http_build_query($output);
         $allstr = str_replace('href="'.$url.'"', 'href="'.$newurl.'"',  $allstr);
    }
    //新增代码end-----
    return  $allstr;   

三、帝国cms模板结合项如价格范围刷选方法

/e/action/ListInfo.php?classid=1&ph=1&jiage=0__50

四、帝国cms结合项分页代码在哪修改

帝国CMS结合项页面用 [!--show.listpage--]页码不是用的sys_ShowListMorePage 函数返回值。后来查找结合项用的函数是 /e/class/connect.php内的page1函数。所以帝国cms结合项分页代码在/e/class/connect.php修改,直接查询“//前台分页”修改page1函数样式就可以了。

  • YES
  • NO
更多>>

相关文章