1

我想限制下面我的分页 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>';
    }
}?>
4

1 回答 1

1

您当前的脚本$x在 0 和$max_pages.

您可以做的是首先将它们替换为$from_pageand $to_page

$from_page = 0;
$to_page   = $max_pages;

...

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

此时脚本将像以前一样工作。

现在,如果您只想显示从$N之前的$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>';
    }
}?>
于 2013-01-24T15:26:11.437 回答