首页建站经验 优化重写ecshop分页get_pager函数

优化重写ecshop分页get_pager函数

在ecshop分页的时候要按照自己的需求分页,所有在ecshop原有的get_pager分页函数基础上进行了修改:function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){$…

在ecshop分页的时候要按照自己的需求分页,所有在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 数组里面包含了第一页/末页 、上一页/下一页 已经分页显示的码数及地址,赋值到前端页面即可实习自定义分页!

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/17729.html
上一篇ThinkPHP自定义函数解决模板标签加减运算的方法
下一篇 分享ecshop猜你喜欢的开发原理
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部