如何确定要显示的页码

时间:2012-12-06 04:33:37

标签: perl pagination

我正在试图弄清楚如何确定哪个页面链接显示在列表清单的底部。说我有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页面和当前页面,生成要显示的页面列表。我正在使用perl,但另一种语言的例子也可以。

1 个答案:

答案 0 :(得分:0)

这样的事情应该适合你。

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
相关问题