稍作修改
分页不应该显示超过5个按钮/链接(不计算下一个/上一个),如果我在分页中间的某个地方它应该显示
1 ... 5 6 7 ... 20
或
1 ... 9 10 11 ... 20
如果在最后一页
1 ... 17 18 19 20
我从这个
开始function pagination (){
// prev link
$html ='';
$numpages = 20;
$current_page = 1;
$dotshow = true;
if ($numpages != 1) {
$html .='<span><i class="fa fa-angle-left"></i></span>';// prev
for($i=1; $i <= $numpages; $i++){
if ($i == 1 || $i == $numpages || ($i >= $current_page - 3 && $i <= $current_page + 3) ) {
$dotshow = true;
if ($i != $current_page){
$html .='<a class="pagination-link" href="#linkhere">';
$html .='<span> '.$i.'</span>';
$html .='</a>';
}else{
$html .='<span class="current">';
$html .='<span> '.$i.'</span>';
$html .='</span>';
}
}else if ( $dotshow ){
$dotshow = false;
$html .='<span class="dots">';
$html .='<span> ... </span>';
$html .='</span>';
}
}
$html .='<span><i class="fa fa-angle-right"></i></span>';// next
}
if($html !=''){
return $html;
}
}
在第一次也是最后一次我得到了这个
但在我的第5页上显示了这一点,并且由于错误的当前,总计,限制计算,链接数量增加。
任何帮助表示赞赏!
答案 0 :(得分:2)
这是架构。您可以使用您的HTML代码,样式和变量进行调整:
$pages
是页码总数,$page
是当前页面,$start
是第一页“group”:
/* Set subgroup page start: */
if ( $pages < 6 ) $start = 2;
elseif( $page < 3 ) $start = 2;
elseif( $page > $pages-3 ) $start = $pages - 3;
else $start = $page - 1;
/* Compose line: */
/* Page 1 (always): */
$output = '[1]';
/* Initial separator: */
if( $start > 2 ) $output .= '...';
/* Page subgroup: ends if reached +2 or pages-1 */
for( $i = $start; $i < $pages; $i++ )
{
$output .= "[$i]";
if( $i > ($start+1) ) break;
}
/* Final separator: */
if( $start < $pages - 3 ) $output .= '...';
/* Last page: */
if( $pages > 1 ) $output .= "[$pages]";
/* Output: */
echo $output;
我在代码中添加了注释,因为我认为这是不言自明的。如果您有疑问,请随时询问。
的 phpFiddle demo 强>
答案 1 :(得分:0)
thnx to fusion3K用于解决方法,但我的版本的修复是调整特定页码的限制
function pagination (){
$html ='';
$numpages = 20;
$current_page = 1;
$dotshow = true;
if( $current_page == 2 || $current_page == $numpages -1 ){
$limit = 2;
}else if($current_page >= 3 && $current_page != $numpages ){
$limit = 1;
}else{
$limit = 3;
}
if ($numpages != 1) {
$html .='<span><i class="fa fa-angle-left"></i></span>';// prev
for($i=1; $i <= $numpages; $i++){
if ($i == 1 || $i == $numpages || ($i >= $current_page - $limit && $i <= $current_page + $limit) ) {
$dotshow = true;
if ($i != $current_page){
$html .='<a class="pagination-link" href="#linkhere">';
$html .='<span> '.$i.'</span>';
$html .='</a>';
}else{
$html .='<span class="current">';
$html .='<span> '.$i.'</span>';
$html .='</span>';
}
}else if ( $dotshow ){
$dotshow = false;
$html .='<span class="dots">';
$html .='<span> ... </span>';
$html .='</span>';
}
}
$html .='<span><i class="fa fa-angle-right"></i></span>';// next
}
if($html !=''){
return $html;
}
}