首页 > 代码库 > 定制 ThinkPHP 分页类

定制 ThinkPHP 分页类

第一步,引入:

 

 1 import(‘ORG/Util/Page‘);     2 $total = M(‘xxx‘)->count();    //获取总记录数 3 $page = new Page($total, 3);    //实例化:(总数,每页显示的记录数) 4      5 $limit = $page->firstRow.‘,‘.$page->listRows;    //用于SQL 的 limit 语句的限制字符串:‘limit 0,12‘ 6 $result = M(‘xxx‘)->limit($limit)->select(); 7  8 $this->assign(‘XXX‘, $result); 9 $this->page = $page->show();    //分页显示输出10 //输出的分页显示样式为: 34      条记录            6/12 页               上一页    下一页      第一页       上5页      1 2 3 4 5      下5页       尾页11 此时‘theme‘ = ‘%totalRow%   %header%   %nowPage%/%totalPage% 页   %upPage% %downPage%   %first%    %prePage%   %linkPage%   %nextPage%   %end%‘ 12 13 为了做CSS样式,可以修改 Page.class.php 类,给 $linkPage 的 <a...> 加一个class:< a class=‘num‘...>

 

第二步,定制:


定制主要是围绕 theme 来做的。可以根据需要,任意调整初始 theme 中的变量位置,或者删除里面不要的。

在不修改基础上, 使用 setConfig 方法来修改默认的一些设置:$page->setConfig(‘header‘, ‘个会员‘);
setConfig方法支持的属性包括:
header:头部描述信息,默认值 “条记录”
prev:上一页描述信息,默认值是“上一页”
next:下一页描述信息,默认值是“下一页”
first:第一页描述信息,默认值是“第一页”
last:最后一页描述信息,默认值是“最后一页”
theme :分页主题描述信息,包括了上面所有元素的组合 ,设置该属性可以改变分页的各个单元的显示位置

比如可以改为:

1 $page->setConfig(‘first‘, ‘首页‘);2 $page->setConfig(‘last‘, ‘尾页‘);3 $page->setConfig(‘theme‘, ‘%first%  %upPage%  %prePage%  %linkPage%   %nextPage%   %downPage%  %end%‘);4 5 $this->page = $page->show();


此外,要是还达不到需要的样子,只好直接修改源码了!

使用    [上N页] ... [下N页]    的样子并不好看,我通常会将其改为   << ..... >>:

1 //$prePage    =   "<a href=http://www.mamicode.com/‘".str_replace(‘__PAGE__‘,$preRow,$url)."‘ >上".$this->rollPage."页</a>";2 $prePage    =   "<a href=http://www.mamicode.com/‘".str_replace(‘__PAGE__‘,$preRow,$url)."‘ >&lt;&lt;</a>";3 4 //$nextPage   =   "<a href=http://www.mamicode.com/‘".str_replace(‘__PAGE__‘,$nextRow,$url)."‘ >下".$this->rollPage."页</a>";5 $nextPage   =   "<a href=http://www.mamicode.com/‘".str_replace(‘__PAGE__‘,$nextRow,$url)."‘ >&gt;&gt;</a>";

 

 第三,样式:

模板中:

<css file=‘__PUBLIC__/Css/page.css‘ />...<div id=‘page‘> {page} </div>....

CSS:

 1 /*样式- 2 #page { text-align:center; padding:20px 0 20px 0; clear:both; } 3 #page a.num { border:1px solid #666; padding:2px 5px; margin:0 2px; } 4 #page a.num:hover,#page span.current { color:#fff; border:1px solid #000; background:#000; text-decoration:none; } 5 #page span.disabled { border:1px solid #ccc; padding:2px 5px; margin:0 2px; color:#ccc; } 6 #page span.current { padding:2px 5px; margin:0 2px; } 7 */ 8  9 /*10   css flickr style pagination11 */12 #page {padding:3px;margin:3px;text-align:center;}13 #page a{border:#dedfde 1px solid;padding:2px 6px;background-position:50% bottom;color:#0061de;margin:0 3px 0 0;text-decoration:none;}14 #page a:hover{border:#000 1px solid;background-image:none;color:#fff;background-color:#0061de;}15 #page a:active{border:#000 1px solid;background-image:none;color:#fff;background-color:#0061de}16 #page span.current{padding:2px 6px;font-weight:bold;color:#ff0084;margin:0 3px 0 0;}17 #page span.disabled{padding:2px 6px;color:#adaaad;margin:0 3px 0 0;}