<?php
/**
* @功能 smarty分页插件
* @author 肖红阳
* @使用方法 {[listpage page=$initpager.page pageSize=$initpager.pageSize total=$initpager.total tpl='tpl02' ]}
* @page 当前页面
* @page 每页记录数
* @total 总记录数
* @tpl 模板
* @version 2011-04-29
*/
function smarty_function_listpage($params)
{
$page = $params['page']?$params['page']:1;
$total = $params['total'];
$pageSize = $params['pageSize']?$params['pageSize']:5;
$tpl = $params['tpl']?$params['tpl']:'tpl01';
if($total<1){
return;
}else{
//组装页码
$pageEnd = ceil($total/$pageSize);
$firstPage = 1;
if($page>1){
$pagePrev = ($page<=$pageEnd)? $page-1:$pageEnd;
}else{
$pagePrev = 1;
}
if($page<$pageEnd){
$pageNext = $page+1;
}else{
$pageNext = $pageEnd;
}
}
$url = $urlTmp = $_SERVER[REQUEST_URI];
if($position = strpos($urlTmp,'?')){
$url = substr($urlTmp,0,$position);
$strQuery = substr($urlTmp,$position+1);
$arrQuery = array();
parse_str($strQuery,$arrQuery);
if(key_exists('page',$arrQuery)){
unset($arrQuery['page']);
}
$urlPostfix = http_build_query($arrQuery);
}
//组装url
$urlString = $url.'?'.$urlPostfix;
$urlFirst = $urlString.'&page=1';
$urlPrev = $urlString.'&page='.$pagePrev;
$urlNext = $urlString.'&page='.$pageNext;
$urlEnd = $urlString.'&page='.$pageEnd;
//禁用按钮
$hideFirst = $page==1?'class="disabled"':'';
$hideEnd = $page==$pageEnd?'class="disabled"':'';
//模板1
$strPage = "";
if($pageEnd>0){
$strPage = "<select name='sltPage' οnchange='window.location=this.value' />";
for($i=1;$i<=$pageEnd;$i++){
$selected = $i==$page?' selected="selected"':'';
$strPage.="<option {$selected} value='".$urlString.'&page='.$i."'>{$i}</option>";
}
$strPage.= "</select>";
}
$tpl01 = '
<div class="page">
<ul class="ul1">
<li>共$total$条记录</li>
<li>当前第$page$页</li>
<li><a href="$urlFirst$">首页</a></li>
<li><a href="$urlPrev$">上页</a></li>
<li><a href="$urlNext$">下页</a></li>
<li><a href="$urlEnd$">尾页</a></li>
</ul>
<ul class="ul2">
<li>$strPage01$</li>
</ul>
</div>
';
//模板2
$strPage02 = "";
if($pageEnd>0){
if(($page-5)>0&&($page+5)<$pageEnd){
$start = $page-5;
}else{
$start=$page<$pageEnd-9?$page:$pageEnd-9;
$start=$start>0?$start:1;
//$start = $page;
}
if($page<=$pageEnd){
for($i=$start;$i<=$start+9;$i++){
if($i>$pageEnd) continue;
$selected = $i==$page?' class="active"':'';
$strPage02.="<li {$selected}><a href='{$urlString}&page={$i}'>{$i}</a></li>";
}
}
}
$tpl02 = '
<div class="page ">
<ul class="ul1 pagination">
<li class="disabled"><a href="javascript:void(0);">共$total$条记录</a></li>
<li class="disabled"><a href="javascript:void(0);">当前第$page$/$pageEnd$页</a></li>
<li $hideFirst$><a href="$urlFirst$">首页</a></li>
<li $hideFirst$><a href="$urlPrev$">上页</a></li>
$strPage02$
<li $hideEnd$><a href="$urlNext$">下页</a></li>
<li $hideEnd$><a href="$urlEnd$">尾页</a></li>
</ul>
</div>
';
$search = array('$urlFirst$','$urlPrev$','$urlNext$','$urlEnd$','$total$','$page$','$pageEnd$','$hideFirst$','$hideEnd$','$strPage01$','$strPage02$');
$replace = array($urlFirst,$urlPrev,$urlNext,$urlEnd,$total,$page,$pageEnd,$hideFirst,$hideEnd,$strPage,$strPage02);
$str = str_replace($search, $replace, $$tpl);
return $str;
}
转载于:https://blog.51cto.com/6846041/1404703