新闻中心
Ecshop如何优化重写ecshop分页get_pager函数
作者 / 无忧主机 时间 2015-10-24 02:06:39
在使用ecshop在php虚拟主机建站的过程中,总是希望分页能按照自己的意愿进行,下面小编给大家介绍如何优化网站的分页,在ecshop原有的get_pager分页函数基础上进行了修改:
function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){ $size =intval($size);//每页显示几条记录 if($size<1){ //如果每页显示的记录小于1的话 $size = 10;//将每页显示记录条数设置为10 } $page = intval($page);///当前页码 if ($page < 1) ///如果当前页码小于1的话 { $page = 1;///将当前页码默认设置为1 } $record_count = intval($record_count);///记录总数量 $page_count = $record_count > 0 ? intval(ceil($record_count / $size)) : 1; ///总页数 if ($page > $page_count) ///如果当前页码大于总页数 { $page = $page_count;///则将总页数赋值给当前页码 } $page_prev = ($page > 1) ? $page – 1 : 1; ///前一页 $page_next = ($page < $page_count) ? $page + 1 : $page_count; ///后一页 /* 将参数合成url字串 */ $param_url = '?'; ///参数组成的url字符串 如:"?act=list" foreach ($param AS $key => $value) ///键值对数组参数 { $param_url .= $key . '=' . $value . '&'; ///"?号后面的参数" } $pager['url'] = $url; ///第一个参数,是一个文件名 如:get_comment.php $pager['start'] = ($page -1) * $size; ///查询时的起始位置 $pager['page'] = $page; ///当前页 $pager['size'] = $size; ///每页显示的记录条数 $pager['record_count'] = $record_count; ///记录总数 $pager['page_count'] = $page_count; ///总页数 $_pagenum = 10; // 显示的页码 $_offset = 2; // 当前页偏移值 $_from = $_to = 0; // 开始页, 结束页 if($_pagenum > $page_count) ///如果显示的页码 大于 总页数,如:显示10页 总页数为8 则显示1-8 { $_from = 1; ///从1开始 $_to = $page_count; ///到 总页数 为止 } else ///如果 显示的页码 小于 总页码,如:显示10页 总页数为15 {///(1)假如当前页为2,则$_from为0,$_to为9 (2)假如当前页为6,则$_from为4,$_to为13 $_from = $page – $_offset; ;///(1)$_from为0 (2)$_from为4 当前页-当前页偏移量,如: 1-10、2-11、3-12、4-13、5-14、6-15、不会出现7-16、8-17,因为总页数是15 //www.zuimoban.com $_to = $_from + $_pagenum – 1; ///(1)$_to为9 (2)$_to为13 if($_from < 1) { $_to = $page + 1 – $_from; ///(1)则$_to为3 $_from = 1; ///(1)$_from重新复制为1 if($_to – $_from < $_pagenum) //(1)3-1 小于 要显示的页码数 { $_to = $_pagenum; ///(1)则$_to重新复制为10 } } elseif($_to > $page_count) //(2)如果13 大于 10的话 如果14 大于 10的话 { $_from = $page_count – $_pagenum + 1; ///(2)$_from为起始页数:15-10+1=6 $_to = $page_count; //(2)$_to为总页数:15 } } $url_format = $url . $param_url . 'page='; $pager['page_first'] = ($page – $_offset > 1 && $_pagenum < $page_count) ? $url_format . 1 : ''; $pager['page_prev'] = ($page > 1) ? $url_format . $page_prev : ''; $pager['page_next'] = ($page < $page_count) ? $url_format . $page_next : ''; $pager['page_last'] = ($_to < $page_count) ? $url_format . $page_count : ''; $pager['page_number'] = array(); for ($i=$_from;$i<=$_to;++$i) { $pager['page_number'][$i] = $url_format . $i; } return $pager; };返回的$pager 数组里面包含了第一页/末页 、上一页/下一页 已经分页显示的码数及地址,赋值到前端页面即可实习自定义分页! 无忧主机相关文章推荐阅读: ECSHOP如何显示已付款的订单信息 ECSHOP教程:设置只有登录用户才可查看商品详情 ECSHOP的RECIEVE.PHP邮件自动确认收货BUG如何修正
本文地址:https://www.51php.com/ecshop/20470.html