【问题标题】:How to determine which page number links to display如何确定要显示哪些页码链接
【发布时间】:2012-11-24 02:13:09
【问题描述】:

我试图弄清楚如何确定要在列表底部显示哪些页面链接。假设我有 90 页的结果。如果可能的话,我希望始终有一个指向第 1 页和第 90 页的链接,然后是当前页面的左右 3-4 页。

[] - 表示当前页面

第 1 页: [1] 2 3 4 5 6 7 8 9 ... 90

第 2 页: 1 [2] 3 4 5 6 7 8 9 ... 90

第 20 页: 1 ... 17 18 19 [20] 21 22 23 ... 90

我无法弄清楚逻辑。因此,输入:total_number of pages 和 current page,生成要显示的页面列表。我正在使用 perl,但其他语言的示例也可以。

【问题讨论】:

  • 你试过谷歌吗?我想你会找到很多例子。 search.cpan.org/dist/Data-Pageset 分页的核心概念已经解释过很多次了。当然你可以弄清楚。

标签: perl pagination


【解决方案1】:

这样的东西应该适合你。

use strict;
use warnings;

use feature 'say';

use constant MARGIN => 3;

say join ', ', page_numbers(2, 90);
say join ', ', page_numbers(30, 90);
say join ', ', page_numbers(88, 90);

sub page_numbers {

  my ($this, $total) = @_;

  my $min = $this <= MARGIN + 1 ? 2 : $this - MARGIN;
  my $max = $this >= $total - (MARGIN + 1) ? $total - 1 : $this + MARGIN;

  return 1, $min..$max, $total;
}

输出

1, 2, 3, 4, 5, 90
1, 27, 28, 29, 30, 31, 32, 33, 90
1, 85, 86, 87, 88, 89, 90

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多