PHP產生分頁下標產生例子

來源:互聯網
上載者:User

例子一

網頁的分頁選擇效果直接影響使用者的使用體驗。類似功能的方法有很多,我在這裡寫的方法主要是的優勢在於前後端分離,可以自己定義長度和分頁的行數。

 
測試圖例:
 

 
效果圖:

例子

 /**
 
     *
 
     * @param $page     頁碼(1至正無窮)
 
     * @param $num      資料中多上行為一頁
 
     * @param $rows     資料的總行數
 
     * @param $length   下標的最大長度
 
     * @return array
 
     */
 
    public function PageDate($page, $num , $rows , $length){
 
        //初始化資料
 
        $MaxPage = 0;                  //最大頁碼
 
        $MinPage = 0;                  //最小頁碼
 
        $ServerPage = 0;               //下拉框中顯示的頁碼
 
        $PageData = array();           //全部的頁碼集合(使用者下拉框選擇)
 
        $PageShowData = array();       //用於顯示下標的頁碼集合
 
        $page = intval($page);
 
 
 
        if($rows == 0){
 
            return $data = array(
 
                'page' => $page,
 
                'MaxPage' => $MaxPage,
 
                'MinPage' => $MinPage,
 
                'ServerPage' => $ServerPage,
 
                'PageData' => $PageData,
 
                'PageShowData' => $PageShowData
 
            );
 
        }
 
 
 
        //得到最大分頁和最小分頁
 
        $MaxPage = intval($rows / $num);
 
        $double = $rows % $num;
 
        if($double > 0.000000001)
 
        {
 
            $MaxPage += 1;
 
        }
 
        $MinPage = 1;
 
        $ServerPage = 1;
 
        //得到頁碼的全部項目
 
        for($i = 1; $i <= $MaxPage; $i++ ){
 
            $PageData[$i] = $i;
 
        }
 
        //對頁碼進行正確性改正
 
        if($page < $MinPage){
 
            $page = 1;
 
        }
 
 
 
        if($page > $MaxPage){
 
            $page = 1;
 
        }
 
        /*產生顯示的頁碼標籤*/
 
            //產生左側的代碼快
 
            if($page == $MinPage){
 
                $PageShowData[1] = $page;
 
            }
 
            if($page > $MinPage){
 
                $PageShowData[1] = $MinPage;
 
//                $PageShowData[2] = $page - 1; // <<
 
                $PageShowData[2] = '<<'; // <<
 
                if($page -2 > $MinPage ){
 
                    $PageShowData[3] = $page - 2;
 
                    $PageShowData[4] = $page - 1;
 
                }elseif($page -2 == $MinPage){
 
                    $PageShowData[3] = $page - 1;
 
                }
 
                //確定選中的頁碼代碼快
 
                $PageShowData[count($PageShowData) + 1] = $page;
 
            }
 
        $COUNT = count($PageShowData) + 1;
 
        //產生右側的代碼塊
 
            if($page == $MaxPage){
 
                return $data = array(
 
                    'page' => $page,
 
                    'MaxPage' => $MaxPage,
 
                    'MinPage' => $MinPage,
 
                    'ServerPage' => $ServerPage,
 
                    'PageData' => $PageData,
 
                    'PageShowData' => $PageShowData
 
                );
 
            }
 
            if($page < $MaxPage) {
 
                if($MaxPage - $page >= 2){
 
                    $j = 1;
 
                    for($i = $COUNT; $i <= $length ; $i++){
 
                        $PageShowData[$i] = $page + $j;
 
                        $j ++;
                        if($PageShowData[$i] == $MaxPage -1){
                                 break;
                            }
                    }
 
                }
 
 
 
                $COUNT = count($PageShowData) + 1;
 
//                $PageShowData[$COUNT] = $page + 1; //>>
 
                $PageShowData[$COUNT] = '>>';
 
                $PageShowData[$COUNT + 1] = $MaxPage;
 
 
 
                //得到選中的參數
 
                $ServerPage = $PageShowData[$COUNT-1] + 1;
 
                if($ServerPage > $MaxPage){
 
                    $ServerPage = 1;
 
                }
 
 
 
                return $data = array(
 
                    'page' => $page,
 
                    'MaxPage' => $MaxPage,
 
                    'MinPage' => $MinPage,
 
                    'ServerPage' => $ServerPage,
 
                    'PageData' => $PageData,
 
                    'PageShowData' => $PageShowData
 
                );
 
            }
 
    }

例子二

這樣在某些情況下會嚴重影響頁面的布局,而且文章頁面過多全部顯示出來的話 ,也會影響使用者體驗,因此這篇教程圍繞dede分頁數量無法控制的問題,以修改{dede:pagebreak/}標籤為主進行講解。

情況如下:


這是分了15頁,假如更多呢,不感想象,自己辛苦花錢做出來的模板就完全走樣了!
改後效果:
1
2
3
修改方法:
在include/arc.archives.class.php這個類,這個主是來解析文章內容的類
找到
function GetPagebreak($totalPage,$nowPage,$aid)
這是一個靜態分頁解析的一個方法,在這個方法裡找到:for($i=1;$i<=$totalPage$i++)
在這個迴圈前面加上 :
if($totalPage>=8){//這個是在分頁數量大於的情況下執行下面的語句
$totallist=7+$nowPage;//這裡是要顯示幾頁,如果是10頁就寫9
if($totallist>$totalPage){
$totallist=$totalPage;
}
$d=$nowPage;
$dqys=$totallist-($d-1);
if($dqys<8){
$d=$totalPage-7;
}
}else{
$totallist=$totalPage;
$d=1;
}
然後再改
for($i=1;$i<=$totalPage;$i++)為for($i=$d;$i<=$totallist;$i++)
這個是靜態頁面分頁的修改,動態和這個方法一樣

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.