重寫ecshop分頁函數get_pager

重寫ecshop分頁函數get_pager

在分頁的時候要按照本身的需求分頁,全部在ecshop原有的分頁函數基礎上進行了修改:php

function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){html

    $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-十、2-十一、3-十二、4-1三、5-1四、6-1五、不會出現7-1六、8-17,由於總頁數是15  
        $_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 數組裏麪包含了第一頁/末頁 、上一頁/下一頁 已經分頁顯示的碼數及地址,賦值到前端頁面便可實習自定義分頁!ui

相關文章
相關標籤/搜索