php分页不带参数,phpcms 前台分页传参数,确保分页条件不被重置

情况描述:

1、前台列表页使用了 phpcms 自带的标签获取数据 {pc:content action="lists" catid="$catid" where="$where" num="15" order="id DESC"  page="$page"}

2、前台列表页,页面顶部有一些快速搜索按钮,点击后就可以实现快速搜索功能。

3、但是,当点击快速搜索按钮后,如果我们点击下一页,会发现搜索参数丢失(如:价格、区域等参数),需要重新搜索。

两种方案,两种的区别是,一个简便,一个复杂。好直白的区别啊,哈哈。。。

方案一(简便)

修改 phpcms/libs/functions/global.func.php 文件

找到 function pageurl($urlrule, $page, $array = array())  方法

在 $url = str_replace($findme, $replaceme, $urlrule); 这个代码上边加上:if(!empty($_GET['quyu'])){

$urlrule.='&quyu='.$_GET['quyu'];

}

if(!empty($_GET['jiage'])){

$urlrule.='&jiage='.$_GET['jiage'];

}

方案二:

观察代码:

phpcms/modules/content/index.php 文件的list 方法中有以下代码

//URL规则

$urlrules = getcache('urlrules','commons');

$urlrules = str_replace('|', '~',$urlrules[$category_ruleid]);

$tmp_urls = explode('~',$urlrules);

$tmp_urls = isset($tmp_urls[1]) ? $tmp_urls[1] : $tmp_urls[0];

preg_match_all('/{$([a-z0-9_]+)}/i',$tmp_urls,$_urls);

if(!empty($_urls[1])) {

foreach($_urls[1] as $_v) {

$GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];

}

}

/***请仔细看下面几行代码**/

define('URLRULE', $urlrules);

$GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;

$GLOBALS['URL_ARRAY']['catdir'] = $catdir;

$GLOBALS['URL_ARRAY']['catid'] = $catid;

phpcms/libs/functions/global.func.php文件中的 pages() 方法中,前几行有如下代码:

if(defined('URLRULE') && $urlrule == '') {

$urlrule = URLRULE;

$array = $GLOBALS['URL_ARRAY'];//请仔细看这行代码

} elseif($urlrule == '') {

$urlrule = url_par('page={$page}');

}

一、修改phpcms/modules/content/index.php 文件

通过仔细观察后,可以发现,我们可以将 index.php 文件的 lists() 方法中的 $GLOBALS['URL_ARRAY']  动态添加几个值,例如

//添加 jiage 参数

$GLOBALS['URL_ARRAY']['jiage'] = $jiage;//添加jiage参数

$urlrules .="&jiage={$jiage}";//在url规则中,添加jiage参数

//同时添加 quyu 参数

$GLOBALS['URL_ARRAY']['quyu'] = $quyu;

$urlrules .="&quyu={$quyu}";

二、修改 phpcms/libs/functions/global.func.php 文件

找到 pageurl 函数:

//先将传入的 url 规则进行保留,原因是下面几行代码,经过输出后,发现 url 规则会发生变化,因为我们之前对 index.php 文件的原始 url 规则进行了改造

$old_urlrule = $urlrule;

if(strpos($urlrule, '~')) {

$urlrules = explode('~', $urlrule);

$urlrule = $page < 2 ? $urlrules[0] : $urlrules[1];

}

/**下面几行,是对url链接进行重新合并**/

$new_rule = '';

if(strpos($old_urlrule,'quyu')){//echo $old_urlrule.'
';

$new_rule .= '&quyu={$quyu}';

}

if(strpos($old_urlrule,'jiage')){

$new_rule .= '&jiage={$jiage}';

}

$urlrule .= $new_rule;

至此,完成了所有的改动,这时候,重新刷新列表页面,当点击了某个搜索功能后,鼠标放在分页的数字上,会发现链接上已经存在新的参数了。

由于这是我的原创文章,未经本人许可,请勿转载,谢谢合作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值