ecshop分页函数详细分析

2012-09-26 22:42 来源:www.chinab4c.com 作者:ecshop专家

     ecshop分页函数详细分析,这个文章我们主要介绍ecshop分页函数。我们在看function get_pager($url, $param, $record_count, $page = 1, $size = 10)函数的时候,我们可以发现。这个函数抛弃了url复杂的处理,灵活的通过args的传递,以及基础url的封装,灵活的实现了ecshop特有的分 页方式。在进行ecshop分页的时候,只要统计出查询记录的条数,以及每页显示的页码数字,以及所在的页码,就能很轻松的实现对ecshop分页。

     首先通过记录总数,以及每页显示的个数,计算出总分页数。 $page_count = $record_count > 0 ? intval(ceil($record_count / $size)) : 1,通过args进行参数的封装, $param_url = '?';
    foreach ($param AS $key => $value)
    {
        $param_url .= $key . '=' . $value . '&';
    }

  如果请求的是如age=3&name=name,那么就通过封装,自然就形成了。

   最复杂的是下面,分页页码显示。  

   $_pagenum = 10;     // 显示的页码
        $_offset = 2;       // 当前页偏移值
        $_from = $_to = 0;  // 开始页, 结束页

   显示页面,表示显示分页下标的个数,$offset表示便宜量,$from ,$to表示从多少下标开始,到多少下标结束。如果开始页码和结束页码的数量大于总页码数量,那么最大的页码数量为总记录条数,起始的页码就是第一页。

    if($_pagenum > $page_count)
        {
            $_from = 1;
            $_to = $page_count;
        }

     开始页码为当前页码减去偏移数量,结束页码为开始页码加页码显示数量,减去1。

     $_from = $page - $_offset;
            $_to = $_from + $_pagenum - 1;

     如果开始偏移量小于1,那么就执行以下程序。

    if($_from < 1)
            {
                $_to = $page + 1 - $_from;
                $_from = 1;
                if($_to - $_from < $_pagenum)
                {
                    $_to = $_pagenum;
                }
            }

     在循环偏移量里面,生成翻页页码,进行显示。

    for ($i=$_from;$i<=$_to;++$i)
        {
            $pager['page_number'][$i] = $url_format . $i;
        }

     通过以上函数,ECSHOP实现了很好的分页方式。

    来源:http://www.chinab4c.com