2017-05-01 8 views
3

私はPaginatedPagesの使用に問題があります。 docsでは、要約をカスタマイズすることができます。SilverStripe PaginatedPagesはカスタムサマリーを表示します

私のコードがあります:

public function PaginatedPages($n = 10) { 
    $list = Page::get()->sort(array('Date' => DESC)); 
    $Pages = new PaginatedList($list, $this->request); 
    if ($_GET['results'] != "") { 
     $n = $_GET['results']; 
    } 
    $Pages->setPageLength($n); 
    return $Pages; 
} 

改ページがテンプレートページの一番下に:

<div id="PaginatedPages"> 
    <% if $PaginatedPages.MoreThanOnePage %> 
     <% if $PaginatedPages.NotFirstPage %> 
      <a class="prev" href="$PaginatedPages.PrevLink"><</a> 
     <% end_if %> 
     <% loop $PaginatedPages.Pages %> 
      <% if $CurrentBool %> 
       <a class="current">$PageNum</a> 
      <% else %> 
       <% if $Link %> 
        <a href="$Link">$PageNum</a> 
       <% else %> 
        ... 
       <% end_if %> 
      <% end_if %> 
      <% end_loop %> 
     <% if $PaginatedPages.NotLastPage %> 
      <a class="next" href="$PaginatedPages.NextLink">></a> 
     <% end_if %> 
    <% end_if %> 
</div> 

このコードでは再現:私はこれをしたくない

[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20] 

を。 20ページ分の結果があれば、すべてが表示され、結果は長くて醜いです。

私は次のことをしたい:

[1] ... [9] [10] [11] [12] [13] ... [20] 
+0

使用しているコードを投稿して、コンテキストを持てますか? – UncleCheese

+0

こんにちは@UncleCheese、私はコードで私の質問を更新しました。今回私はもっときれいになることを願っています。返信して助けてくれてありがとう。 – StefGuev

答えて

6

あなたがこれを達成するために$PaginatedPages.PaginationSummaryを使用することができます。

<div id="PaginatedPages"> 
    <% if $PaginatedPages.MoreThanOnePage %> 
     <% if $PaginatedPages.NotFirstPage %> 
      <a class="prev" href="$PaginatedPages.PrevLink"><</a> 
     <% end_if %> 
     <% loop $PaginatedPages.PaginationSummary %> 
      <% if $CurrentBool %> 
       <a class="current">$PageNum</a> 
      <% else %> 
       <% if $Link %> 
        <a href="$Link">$PageNum</a> 
       <% else %> 
        ... 
       <% end_if %> 
      <% end_if %> 
      <% end_loop %> 
     <% if $PaginatedPages.NotLastPage %> 
      <a class="next" href="$PaginatedPages.NextLink">></a> 
     <% end_if %> 
    <% end_if %> 
</div> 

PaginationSummaryが視覚的にバランスの取れたため、現在のページの周りに示されたページの数を制限まとめたページネーションを返します。

PaginationSummary現在のページの周りに表示するページ数を制御するパラメータを取ることができます。デフォルトでPaginationSummaryは、現在のページ(前2ページ、後2ページ、例えば[1] ... [4] [5] [[6]] [7] [8] ... [25])の周りに4ページを表示します。 PaginationSummary(6)を呼び出すと、現在のページの3ページ前と3ページ後になります。例:[1] ... [3] [4] [5] [[6]] [7] [8] [9] ... [25]。番号は、各ページの半分が現在のページの両側に表示されるので、常に偶数にする必要があります。

+1

ああ、とても素敵です。ありがとう@ 3dgoo – StefGuev

関連する問題