我有以下方法为PHP中的分页链接创建并返回标记。
public function getPaginationLinks($options) {
if($options['total_pages'] > 1) {
$markup = '<div class="pagination">';
if($options['page'] > 1) {
$markup .= '<a href="?page=' . ($options['page'] - 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">< prev</a>';
}
for($i = 1; $i <= $options['total_pages']; $i++) {
if($options['page'] != $i) {
$markup .= '<a href="?page='. $i . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">' . $i . '</a>';
}
else {
$markup .= '<span class="current">' . $i . '</span>';
}
}
if($options['page'] < $options['total_pages']) {
$markup .= '<a href="?page=' . ($options['page'] + 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">next ></a>';
}
$markup .= '</div>';
return $markup;
}
else {
return false;
}
}
我最近发现(令我惊讶的是)我已经达到了70多页,这意味着现在有70多个链接显示在底部..
我想知道是否有人可以帮我解决这个问题。我不确定大多数分页是如何起作用的,如果即时通讯显示数字......第30页,想法?
答案 0 :(得分:4)
您只需显示当前页面以及上一页和下一页x
(例如4页)。
如果你在第1页
1 2 3 4 5
第35页:
31 32 33 34 35 36 37 38 39
第70页:
66 67 68 69 70
您还可以使用«
和»
添加指向第一页和最后一页的快速链接。
示例:强>
$x = 4;
for ($i = $currentPage - $x; $i < $currentPage; $i++)
{
if ($i >= 1) { /* show link */}
else { /* show ellipsis and fix counter */ $i = 1; }
}
/* show current page number without link */
for ($i = $currentPage + 1; $i < $currentPage + $x; $i++)
{
if ($i <= $totalPages) { /* show link */}
else { /* show ellipsis and break */ break; }
}
您还可以实施Infinite History / Pagination,这非常酷。 =)
答案 1 :(得分:1)
你可以(第15页)
[View Previous] 12 13 14 [15] 15 17 18 [View More]
[查看更多]链接获取其余(或更多)页面链接的位置。这样可以让用户整理所有页面,从而保持整洁。
示例(单击“查看上一个”后)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]
或(只是展示一些) [查看更多] 7 8 9 10 11 12 13 14 [15] 15 17 18 [查看更多]
当我说“fetch”时,我指的是使用javascript创建其他页面的链接,无需重新加载页面
答案 2 :(得分:1)
考虑“对数分页”,如此处所述(包括PHP代码):
How to do page navigation for many, many pages? Logarithmic page navigation
答案 3 :(得分:0)
您也可以查看Zend_Paginator,它会为您处理许多类型的事情。