2

表示されるページネーションを制限しようとしています。私のサイトには 500 以上のページがあり、500 以上の数字はすべてページネーションに表示されています。

私はそれを次のように制限しようとしています:

Prev 1 2 3 4 5 6 Next 

私のコード:

$skin = new skin('site/pagination'); $pagination = '';
if ($pages >= 1 && $page <= $pages) {
    for ($x=1; $x<=$pages; $x++) {
        $TMPL['pagination'] = ($x == $page) ? '<strong><a href="/writer/'.urlencode($name).'/'.$x.'">'.$x.'</a></strong> ' : '<a href="/writer/'.urlencode($name).'/'.$x.'">'.$x.'</a> ';
        $pagination .= $skin->make();
    }
}
4

5 に答える 5

9

ページネーションのページ数制限の問題はchnageで解決

for ($x=1; $x<=$pages; $x++)

for($x = max(1, $page - 5); $x <= min($page + 5, $pages); $x++)
于 2012-07-06T21:16:14.923 に答える
8

これが何をすることを期待していますか?:

for ($x=1; $x<=$pages; $x++)

すべてのページにエントリを作成します。それが望ましくない場合は、意味のある方法で制限してください。

for ($x=1; $x <= min(5, $pages); $x++)

さらに良いのは、現在のページを検討することです。

for ($x=max($curpage-5, 1); $x<=max(1, min($pages,$curpage+5)); $x++)
于 2012-07-06T18:23:09.713 に答える
0

wallyk と Hemang から提供された回答を試しましたが、ページネーションのケースには不十分でした。彼らの回答には、範囲よりも少ないリンクが表示されることがあります。max ステートメントと min ステートメントをいくつか追加する必要がありました。

これが私のJavascriptコードの見方です:

var minPage = Math.max(Math.min(currentPage - (range / 2), totalPages - range), 0);
var maxPage = Math.min(Math.max(currentPage + (range / 2), range), totalPages);

範囲は、常に表示されるリンクの数です。totalPages は、反復するページの総数です。currentPage は、現在表示されているページです。

私のページネーション インデックスは 0 ベースであることに注意してください。

于 2014-08-28T07:11:16.750 に答える
0
//Let's say you want 3 pages on either side of your current page:

$skin = new skin('site/pagination'); $pagination = '';
$currentPage = get the current page number however you have it stored;

// set the lower bound as 3 from the current page
$fromPage = $currentPage - 3;

// bounds check that you're not calling for 0 or negative number pages
if($fromPage < 1) {
    $fromPage = 1;
}

// set the upper bound for what you want
$toPage = $fromPage + 7; // 7 is how many pages you'd like shown

// check that it doesn't exceed the maximum number of pages you have
if($toPage > $maxPages) {
    $toPage = $maxPages;
}

// iterate over your range
for ($x=$fromPage; $x<=$toPage; $x++) {
    $TMPL['pagination'] = ($x == $page) ? '<strong><a href="/writer/'.urlencode($name).'/'.$x.'">'.$x.'</a></strong> ' : '<a href="/writer/'.urlencode($name).'/'.$x.'">'.$x.'</a> ';
    $pagination .= $skin->make();
}
于 2012-07-06T18:30:50.040 に答える
0

ページ数が多い場合は、「対数」ページネーションを使用してリンクを表示することを検討してください。ここで私の答えを参照してください(PHPコードが含まれています):

非常に多くのページのページ ナビゲーションを行う方法は? 対数ページ ナビゲーション

于 2013-01-07T16:08:05.393 に答える