簡體   English   中英

在php分頁中限制頁面

[英]Limiting pages in php pagination

我想限制以下我的分頁php腳本上顯示的頁面數。 這是我幾年前制作的腳本,盡管我在這里閱讀了類似的問題,但它們的編碼卻大不相同。

任何幫助,將不勝感激。

這是我當前的腳本:

<?php 
if ($max_pages>1) {
    echo "<br>";
    if ($page>0) {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==1?'':($page-1).'/'):$category_id.'/'.$paginate[0].($page==1?'':'_'.($page-1)).'/').'" class="pagination">Previous</a>';
    }
    for ($x=0;$x<$max_pages;$x++) {
        if ($page<>$x) {
            echo '<a href="'.$base_url.$sites_directory.($category_id==0?($x==0?'':$x.'/'):$category_id.'/'.$paginate[0].($x==0?'':'_'.($x)).'/').'" class="pagination">'.($x+1).'</a>';
        }
        else {
            echo '<span class="pagination">'.($x+1).'</span>';
        }
    }
    if (($page+1<>$max_pages)) {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==($max_pages-1)?'':($page+1).'/'):$category_id.'/'.$paginate[0].($page==($max_pages-1)?'':'_'.($page+1)).'/').'" class="pagination">Next</a>';
    }
}?>

您當前的腳本使$x在0到$max_pages之間循環。

您可以做的是先將它們替換為$from_page$to_page

$from_page = 0;
$to_page   = $max_pages;

...

for ($x=$from_page; $x < $to_page; $x++)

此時腳本將像以前一樣工作。

現在,如果您只想顯示$N page前的$N頁到$N page后的$page $N $page

$N = 5; // display 5+5+1 = 11 pages

$from_page = $page - $N; if ($from_page < 0) $from_page = 0;
$to_page   = $from_page + 2*$N+1; if ($to_page > $max_pages) $to_page = $max_pages;
$from_page = $to_page - 2*$N-1; if ($from_page < 0) $from_page = 0;

也許不是最優雅的方式,但是它將嘗試適合當前頁面中心的11頁區域。 您可能還需要顯示指向頁面0和$max_pages-1的鏈接。

MRE版本

<?php 
if ($max_pages>1)
{
    $N = 5; // display 5+5+1 = 11 pages

    $to_page   = min($max_pages, max(0, $page - $N) + 2*$N+1);
    $from_page = max($to_page - 2*$N-1, 0);

    echo "<br>";
    if ($page > 0)
    {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==1?'':($page-1).'/'):$category_id.'/'.$paginate[0].($page==1?'':'_'.($page-1)).'/').'" class="pagination">Previous</a>';
    }
    for ($x=$from_page; $x < $to_page; $x++) {

        if ($page != $x) {
            echo '<a href="'.$base_url.$sites_directory.($category_id==0?($x==0?'':$x.'/'):$category_id.'/'.$paginate[0].($x==0?'':'_'.($x)).'/').'" class="pagination">'.($x+1).'</a>';
        }
        else {
            echo '<span class="pagination">'.($x+1).'</span>';
        }
    }
    if (($page+1<>$max_pages)) {
        echo '<a href="'.$base_url.$sites_directory.($category_id==0?($page==($max_pages-1)?'':($page+1).'/'):$category_id.'/'.$paginate[0].($page==($max_pages-1)?'':'_'.($page+1)).'/').'" class="pagination">Next</a>';
    }
}?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM