SilverStripe PaginatedPages显示自定义摘要

Ste*_*uev 3 php pagination 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;
}
Run Code Online (Sandbox Code Playgroud)

模板页面底部的分页:

<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>
Run Code Online (Sandbox Code Playgroud)

此代码重现:

[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20]
Run Code Online (Sandbox Code Playgroud)

我不想要这个.如果一个有20页的结果,它将显示所有,结果是漫长而丑陋的.

我想要以下内容:

[1] ... [9] [10] [11] [12] [13] ... [20]
Run Code Online (Sandbox Code Playgroud)

3dg*_*goo 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>
Run Code Online (Sandbox Code Playgroud)

PaginationSummary返回一个摘要分页,它限制了当前页面周围显示的页面数,以实现视觉平衡.它

PaginationSummary可以使用参数来控制当前页面周围显示的页数.默认情况下PaginationSummary,当前页面周围将显示4页(之前2页,之后2页.例如[1] ... [4] [5] [[6]] [7] [8] ... [25]).调用PaginationSummary(6)将导致当前页面之前3页和3页之后.例如[1] ... [3] [4] [5] [[6]] [7] [8] [9] ... [25].数字应该始终是均匀的,因为每页的数量的一半显示在当前页面的两侧.