我有以下方法为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;
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚发现(令我惊讶的是)我已经达到了70多页,这意味着现在有70多个链接显示在底部..
我想知道是否有人可以帮助我解决这个问题.我不确定如果我正在说这些数据,那么大多数分页的工作原理是什么?第30页,想法?
您只需显示当前页面以及前一页和后一页x
(例如 4 页)。
如果您在第 1 页:
\n\n1 2 3 4 5\n
Run Code Online (Sandbox Code Playgroud)\n\n第 35 页:
\n\n31 32 33 34 35 36 37 38 39\n
Run Code Online (Sandbox Code Playgroud)\n\n第 70 页:
\n\n66 67 68 69 70\n
Run Code Online (Sandbox Code Playgroud)\n\n例如,您还可以使用\xc2\xab
和添加指向第一页和最后一页的快速链接。\xc2\xbb
例子:
\n\n$x = 4;\n\nfor ($i = $currentPage - $x; $i < $currentPage; $i++)\n{\n if ($i >= 1) { /* show link */}\n else { /* show ellipsis and fix counter */ $i = 1; }\n}\n\n/* show current page number without link */\n\nfor ($i = $currentPage + 1; $i < $currentPage + $x; $i++)\n{\n if ($i <= $totalPages) { /* show link */}\n else { /* show ellipsis and break */ break; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n您还可以实现无限历史/分页,这非常酷。=)
\n\n更新:这个 @ Codepad 的更优雅的版本。
\n