帝国cms教程

帝国cms二次开发结合项url参数优化

我的站长站 2019-03-19 人阅读

帝国官方结合项如果同一个字段不同值点击两次以上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; 这行代码的前面插入以下代码即可:

//新增代码---jimmy.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);
}
//新增代码---jimmy.end-----

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

function beautifyUrl($allstr){
//新增代码---jimmy.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);
}
//新增代码---jimmy.end-----
return  $allstr;   
}


相关推荐
  • 帝国cms二次开发
  • 结合项
  • 帝国CMS调用方法
  • 织梦cms地区省市区联动结合项插件
    织梦cms地区省市区联动结合项插件

    联动插件说明1.修复官方联动地区后台编辑文档时三级地区无法显示问题;2.修复前台联动地区在选择二级和三级时数据空白问题;3.省市区分开调用网站插件使用方法1、后台-系统-SQL命令行工具,执行一下...

    织梦cms插件 1266 4年前
  • 帝国CMS结合项插件下载[列表属性筛选显示]
    帝国CMS结合项插件下载[列表属性筛选显示]

    帝国CMS插件安装方法1、打开&ldquo;fieldand.txt&rdquo;文件,将文件里的所有内容复制到 /e/class/userfun.php 文件里(放在<?php和?>之间任意位置);(推荐用Dreamweaver...

    帝国cms插件 2170 10年前
  • 帝国CMS结合项”您来自的链接不存在“解决方法

    打开e/class/userfun.php global $public_r; 改成 global $public_r,$navclassid;---------------------------------------------------- if($_GET['classid'])

    帝国cms教程 794 10年前
  • 帝国CMS调用栏目自定义字段方法

    帝国CMS调用栏目自定义字段方法说明:封面模板,列表模板,内容模板都可以用,且调用方式都是一样的调用标签:<?=ReturnClassAddField(0,&#39;自定义字段&#39;)?>调用多个:<?=$value=ReturnClassAddField(1,&#39;自定义字段1,自定义字段2&#39;)?>取值:<?=$val...

    帝国cms教程 144 3年前
  • 帝国CMS新手教程调用栏目别名

    帝国CMS调用网站标题灵动标签调用网站标题:<?=$public_r[sitename]?> 帝国CMS标签调用网站标题:[!--pagetitle--] 帝国CMS调用栏目别名: <?=$class_r[$GLOBALS[navclas

    帝国cms教程 256 10年前
  • 帝国CMS调用网站标题的方法

    帝国CMS_调用网站标题的方法方法1: [!--pagetitle--]方法2:<?=$public_r[sitename]?>

    帝国cms教程 369 10年前
最新更新