thinkphp简洁、美观、靠谱的分页类
废话不多说先上图预览下;即本博客的分页;
这个分页类是在thinkphp框架内置的分页类的基础上修改而来;
原分页类的一些设计,在实际运用中感觉不是很方便;
1:只有一页内容时不显示分页;
2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮;
3:分页数比较少时不显示首页和末页按钮;
4:包裹分页内容的父级div没有class;
针对以上问题逐一进行了修改成如下;
1:如果没有数据不显示分页,如果有一页及以上内容即显示分页;
2:默认就显示第一页和最后一页按钮,但是在当前页是第一页和最后一页的时候按钮点击无效果;
3:默认就显示首页和末页按钮;
4:为包裹分页内容的父级div添加名为page的class;
5:显示总共查出的内容条数;
示例环境:thinkphp3.2.3;
分页类目录:/Thinkphp/Library/Org/Bjy/Page.class.php
分页类代码如下:
<?php//+----------------------------------------------------------------------//|ThinkPHP[WECANDOITJUSTTHINKIT]//+----------------------------------------------------------------------//|Copyright(c)2006-2014http://thinkphp.cnAllrightsreserved.//+----------------------------------------------------------------------//|Licensed(http://www.apache.org/licenses/LICENSE-2.0)//+----------------------------------------------------------------------//|Author:麦当苗儿<zuojiazi@vip.qq.com><http://www.zjzit.cn>//+----------------------------------------------------------------------/**PHP分页类*修改者:白俊遥*日期:2015.5.10*邮箱:admin@baijunyao.com*博客:http://www.baijunyao.com*/namespaceOrg\Bjy;//根据自己的项目设置命名空间;classPage{public$firstRow;//起始行数public$listRows;//列表每页显示行数public$parameter;//分页跳转时要带的参数public$totalRows;//总行数public$totalPages;//分页总页面数public$rollPage=11;//分页栏每页显示的页数public$lastSuffix=true;//最后一页是否显示总页数private$p='p';//分页参数名private$url='';//当前链接URLprivate$nowPage=1;//分页显示定制private$config=array('header'=>'<spanclass="rows">共%TOTAL_ROW%条记录</span>','first'=>'首页','prev'=>'上一页','next'=>'下一页','last'=>'末页','theme'=>'%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%',);/***架构函数*@paramarray$totalRows总的记录数*@paramarray$listRows每页显示记录数*@paramarray$parameter分页跳转的参数*/publicfunction__construct($totalRows,$listRows=20,$parameter=array()){C('VAR_PAGE')&&$this->p=C('VAR_PAGE');//设置分页参数名称/*基础设置*/$this->totalRows=$totalRows;//设置总记录数$this->listRows=$listRows;//设置每页显示行数$this->parameter=empty($parameter)?$_GET:$parameter;$this->nowPage=empty($_GET[$this->p])?1:intval($_GET[$this->p]);$this->nowPage=$this->nowPage>0?$this->nowPage:1;$this->firstRow=$this->listRows*($this->nowPage-1);}/***定制分页链接设置*@paramstring$name设置名称*@paramstring$value设置值*/publicfunctionsetConfig($name,$value){if(isset($this->config[$name])){$this->config[$name]=$value;}}/***生成链接URL*@paraminteger$page页码*@returnstring*/privatefunctionurl($page){returnstr_replace(urlencode('[PAGE]'),$page,$this->url);}/***组装分页链接*@returnstring*/publicfunctionshow(){if(0==$this->totalRows)return'';/*生成URL*/$this->parameter[$this->p]='[PAGE]';$this->url=U(ACTION_NAME,$this->parameter);/*计算分页信息*/$this->totalPages=ceil($this->totalRows/$this->listRows);//总页数if(!empty($this->totalPages)&&$this->nowPage>$this->totalPages){$this->nowPage=$this->totalPages;}/*计算分页零时变量*/$now_cool_page=$this->rollPage/2;$now_cool_page_ceil=ceil($now_cool_page);//上一页$up_row=$this->nowPage-1;$up_page=$up_row>0?'<aclass="prev"href="'.$this->url($up_row).'">'.$this->config['prev'].'</a>':'<aclass="prev"href="javascript:;">'.$this->config['prev'].'</a>';//下一页$down_row=$this->nowPage+1;$down_page=($down_row<=$this->totalPages)?'<aclass="next"href="'.$this->url($down_row).'">'.$this->config['next'].'</a>':'<aclass="next"href="javascript:;">'.$this->config['next'].'</a>';//第一页$the_first='<aclass="first"href="'.$this->url(1).'">'.$this->config['first'].'</a>';//最后一页$the_end='<aclass="end"href="'.$this->url($this->totalPages).'">'.$this->config['last'].'</a>';//数字连接$link_page="";for($i=1;$i<=$this->rollPage;$i++){if(($this->nowPage-$now_cool_page)<=0){//echo$i;die;$page=$i;}elseif(($this->nowPage+$now_cool_page-1)>=$this->totalPages){$page=$this->totalPages-$this->rollPage+$i;}else{$page=$this->nowPage-$now_cool_page_ceil+$i;}//echo$this->nowPage;die;if($page>0&&$page!=$this->nowPage){if($page<=$this->totalPages){$link_page.='<aclass="num"href="'.$this->url($page).'">'.$page.'</a>';}else{break;}}else{$link_page.='<spanclass="current">'.$page.'</span>';}}//替换分页内容$page_str=str_replace(array('%HEADER%','%NOW_PAGE%','%UP_PAGE%','%DOWN_PAGE%','%FIRST%','%LINK_PAGE%','%END%','%TOTAL_ROW%','%TOTAL_PAGE%'),array($this->config['header'],$this->nowPage,$up_page,$down_page,$the_first,$link_page,$the_end,$this->totalRows,$this->totalPages),$this->config['theme']);return'<divclass="page">'.$page_str.'</div>';}}
分页类调用:
$count=$this->where($where)->count();$page=new\Org\Bjy\Page($count,$limit);$list=$this->where($where)->order('addtimedesc')->limit($page->firstRow.','.$page->listRows)->select();$show=$page->show();
分页类的使用方法和原thinkphp相同;具体参考:thinkphp手册-数据分页
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。