[英]Break up PHP Pagination links
我有以下方法為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頁,想法?
您只需顯示當前頁面以及上一頁和后面的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; }
}
你也可以實現無限歷史/分頁 ,這是非常酷的。 =)
更新: 這個@Codepad更優雅的版本 。
考慮“logarithmic pagination”,如此處所述(包括PHP代碼):
你可以做(第15頁)
[View Previous] 12 13 14 [15] 15 17 18 [View More]
其中[查看更多]鏈接獲取其余(或更多)頁面鏈接。 這樣可以保持用戶整潔,同時允許用戶瀏覽所有頁面。
示例(單擊View Previous之后)
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 [查看更多]
當我說“獲取”時,我的意思是使用javascript創建指向其他頁面的鏈接,無需重新加載頁面
您還可以查看Zend_Paginator ,它可以為您處理許多類型的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.