翻页增加下拉跳转的这个需求也是应一个客户提出的要求而修改的,先看看效果:
Phpcms v9翻页增加下拉跳转具体方法:
修改phpcms/libs/functions/global.func.php中的pages函数为:
function pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpages = 10) { if(defined('URLRULE') && $urlrule == '') { $urlrule = URLRULE; $array = $GLOBALS['URL_ARRAY']; } elseif($urlrule == '') { $urlrule = url_par('page={$page}'); } $multipage = ''; if($num > $perpage) { $page = $setpages+1; $offset = ceil($setpages/2-1); $pages = ceil($num / $perpage); if (defined('IN_ADMIN') && !defined('PAGES')) define('PAGES', $pages); $from = $curr_page - $offset; $to = $curr_page + $offset; $more = 0; if($page >= $pages) { $from = 2; $to = $pages-1; } else { if($from <= 1) { $to = $page-1; $from = 2; } elseif($to >= $pages) { $from = $pages-($page-2); $to = $pages-1; } $more = 1; } // 如果总页数大于1才显示当前页码信息等。 if ($pages > 1) { $multipage .= '<a>共'.$pages.'页 页次 '.$curr_page.'/'.$pages.' 页</a>'; $multipage .= ''; $multipage .= ''; $multipage .= '<a href="'.pageurl($urlrule, 1, $array).'">首页</a>'; $multipage .= ''; } if($curr_page>0) { $multipage .= '<a href="'.pageurl($urlrule, $curr_page-1, $array).'" >上一页</a>'; if($curr_page==1) { $multipage .= '<span>1</span>'; } elseif($curr_page>6 && $more) { $multipage .= '<a href="'.pageurl($urlrule, 1, $array).'">1</a>..'; } else { $multipage .= '<a href="'.pageurl($urlrule, 1, $array).'">1</a>'; } } for($i = $from; $i <= $to; $i++) { if($i != $curr_page) { $multipage .= '<a href="'.pageurl($urlrule, $i, $array).'">'.$i.'</a>'; } else { $multipage .= '<span>'.$i.'</span>'; } } if($curr_page<$pages) { if($curr_page<$pages-5 && $more) { $multipage .= '...<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" >下一页</a>'; } else { $multipage .= '<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" >下一页</a>'; } } elseif($curr_page==$pages) { $multipage .= '<span>'.$pages.'</span> <a href="'.pageurl($urlrule, $curr_page, $array).'" >下一页</a>'; } else { $multipage .= '<a href="'.pageurl($urlrule, $pages, $array).'">'.$pages.'</a> <a href="'.pageurl($urlrule, $curr_page+1, $array).'" >下一页</a>'; } } $str = http_build_query($_GET); $ppp=explode(page,$str); // 如果总页数大于1才显示“最后一页”。 if ($pages > 1) { $multipage .= '<a href="'.pageurl($urlrule, $pages, $array).'">尾页</a>'; $multipage .= ' 跳转到 <select class="jumpmenu" name="jumpmenu" onchange="JavaScript:if (this.options[this.selectedIndex].value != '') window.open(this.options[this.selectedIndex].value);this.options[0].selected;">'; $multipage .= ''; for($i=1; $i<=$pages; $i++) { $multipage .= '<option value="'.pageurl($urlrule, $i, $array).'">第 '.$i.' 页</option>'; } $multipage .= '</select>'; $multipage .= ''; } return $multipage; }
前台调用翻页的方式还是没变,常规的调用代码就好:
{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page"} <ul class="list lh24 f14"> {loop $data $r} <li><span class="rt">{date('Y-m-d H:i:s',$r[inputtime])}</span>·<a href="{$r[url]}" target="_blank"{title_style($r[style])}>{$r[title]}</a></li> {if $n%5==0}<li class="bk20 hr"></li>{/if} {/loop} </ul> <div class="list-page"><div class="pagenavi">{$pages}</div></div> {/pc}
前台CSS需要对应调整下,具体分享如下:
.list-page{text-align:center} .pagenavi{margin:0;border-radius:0} .pagenavi>a,.pagenavi>span{margin-top:10px;padding:4px 14px;margin-left:6px;color:#777;background-color:#fff;border:1px solid #ddd;display: inline-block;} .pagenavi>a:hover{color:#0192cb} .pagenavi>span,.pagenavi>a:focus,.pagenavi>a:hover{z-index:2;color:#fff;background-color:#0192cb;border-color:#0192cb} .pagenavi>a:first-child{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0} .pagenavi>a:last-child{border-top-right-radius:0;border-bottom-right-radius:0} .jumpmenu{ height:36px; border:1px solid #ddd; padding:0 5px; margin-top:10px; outline:none;} .jumpmenu option{ line-height:26px;}
以上分享纯属经验,希望对大家有用。