既有首页、尾页、前页、后页及指定页数的跳转,又实现了页面显示数量的固定,基本达到了自己心中想要的效果。下面阿修就分享一下自己折腾的emlog分页函数整合代码。依然是修改emlog基础函数库function.base.php(位于emlog根目录/include/lib文件夹下)中的分页函数,大概在function.base.php的220~250行(前提是你的function.base.php是原版文件),分页函数代码替换为如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
/** * 分页函数 * * @param int $count 条目总数 * @param int $perlogs 每页显示条数目 * @param int $page 当前页码 * @param string $url 页码的地址 */ function pagination($count,$perlogs,$page,$url,$anchor=’’){ $pnums = @ceil($count / $perlogs); $urlHome = preg_replace("|[?&/][^./?&=]*page[=/-]|","",$url); $re = ’’; $pagelists = 5; //每页显示的页码数量为:$pagelists*2+1 $page_begin = 1; //起始页码 $page_end = 1; //结束页码 $page = @min($pnums,$page); $prepg=$page-1; //上一页 $nextpg=($page==$pnums ? 0 : $page+1); //下一页 if($pnums<=1) return false; //如果只有一页则跳出 if($page!=1) $re .=" <a href="$urlHome$anchor">首页</a> "; if($prepg) $re .=" <a href="$url$prepg$anchor">前页</a> "; if ($pagelists*2+1 < $pnums){ if ($page <= $pagelists+1){ $page_end = $pagelists*2+1; } elseif ($page >= $pnums-$pagelists){ $page_begin = $pnums-$pagelists*2; $page_end = $pnums; } else{ $page_begin = $page-$pagelists; $page_end = $page+$pagelists; } } elseif ($pnums > 1){ $page_end = $pnums; } for ($i = $page_begin; $i <= $page_end; $i++){ if ($i == $page){ $re .= " <span>$i</span> "; } elseif($i == 1) { $re .= " <a href="$urlHome$anchor">$i</a> "; } else { $re .= " <a href="$url$i$anchor">$i</a> "; } } if($nextpg) $re .=" <a href="$url$nextpg$anchor">后页</a> "; if($page!=$pnums) $re.=" <a href="$url$pnums$anchor">尾页</a>"; #下拉跳转列表,循环列出所有页码 $re .=" 到第 <select name=’topage’ size=’1’ onchange=’window.location="$url"+this.value’> "; for($i=1;$i<=$pnums;$i++){ if($i==$page) $re .="<option value=’$i’ selected>$i</option> "; else $re .="<option value=’$i’>$i</option> "; } $re .="</select> 页"; return $re; } |
本文转载自:修李来福
文章评论