定制 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=‘".str_replace(‘__PAGE__‘,$preRow,$url)."‘ >上".$this->rollPage."页</a>";
2 $prePage    =   "<a href=‘".str_replace(‘__PAGE__‘,$preRow,$url)."‘ >&lt;&lt;</a>";
3
4 //$nextPage   =   "<a href=‘".str_replace(‘__PAGE__‘,$nextRow,$url)."‘ >下".$this->rollPage."页</a>";
5 $nextPage   =   "<a href=‘".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 pagination
11 */
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;} 

定制 ThinkPHP 分页类,布布扣,bubuko.com

时间: 2024-10-11 18:16:37

定制 ThinkPHP 分页类的相关文章

thinkphp 分页类 url 编码处理

在做thinkphp分页的时候  thinkphp 中的分页 有一个小问题 就是 在有form 表单 搜索中文的时候,点击下一页的话 中文会被转换成编码. 如图: 最直接的方法就是 直接修改 thinkphp 分页类 的源代码.(反正改了也不会出现什么大问题~) 在 Page.class.php 文件中 show 方法里面 将 原来的代码注释掉,修改为新的. $this->url=U(ACTION_NAME).'?'.http_build_query($this->parameter); ok

thinkphp 分页类介绍

thinkphp 中的分页类在我看来还是很强大的,使用起来也是很方便的.只要传总的条数,和每页显示的条数,还有样式配置数组,你就可以轻松显示分页,而且可以方便的调整前台页数代码的样式. 下面介绍一下一些配置参数: public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面

ThinkPHP 分页类的使用及退出功能的实现

/* ThinkPHP设置编码统一: 一.数据库设置为utf8_bin 二.HTML页面设置charset=utf-8,而且检查文档编码格式是否是utf-8.phpDesigner8设置方式为“文件->文件编码->选中UTF-8 */ <?php /** 这是后台index控制器 */ Class IndexAction extends CommonAction{ public function index(){ $this->display(); } Public functio

ThinkPHP分页类

第一种:利用Page类和limit方法 $User = M('User'); // 实例化User对象$count      = $User->where('status=1')->count(); // 查询满足要求的总记录数$Page       = new \Think\Page($count,25); // 实例化分页类 传入总记录数和每页显示的记录数(25)$show       = $Page->show();   // 分页显示输出 $list = $User->wh

Thinkphp分页类使用

3.2.2分页设置变化: $count = $pro->count(); //查询出总条数 $page=new \Think\Page($count,5); $page->rollPage = 5; //页面显示的页数,默认是5 $page->lastSuffix=false; //将最后一页显示总页数设置为false,下面的setConfig('last','尾页')才能生效 $page->setConfig('header','共%TOTAL_ROW%条');  //设置显示的

ThinkPHP 分页中带入查询(搜索)条件

parameter 属性赋值 例如要检索用户表中状态为 1 (status=1) 并且电子包含 163 的用户,当提交表单时(注意表单是 GET 方式提交),形成的 URL 地址大致如下: http://www.5idev.com/index.php/Index/search/status/1/email/163 在搜索操作(search)中主要代码如下: public function search(){ $Dao = M("User"); // 构造查询条件 $condition[

thinkphp简洁、美观、靠谱的分页类

废话不多说先上图预览下:即本博客的分页: 这个分页类是在thinkphp框架内置的分页类的基础上修改而来: 原分页类的一些设计,在实际运用中感觉不是很方便: 1:只有一页内容时不显示分页: 2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮: 3:分页数比较少时不显示首页和末页按钮: 4:包裹分页内容的父级div没有class: 针对以上问题逐一进行了修改成如下: 1:如果没有数据不显示分页,如果有一页及以上内容即显示分页: 2:默认就显示第一页和最后一页按钮,但是在当前

thinkphp自带分页类

thinkphp自带分页使用案例: $Data = M('Data'); // 实例化Data数据对象  date 是你的表名     import('ORG.Util.Page');// 导入分页类     $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件     $Page = new Page($count);// 实例化分页类 传入总记录数     $show = $Page->show();// 分页显

thinkphp 原生sql使用分页类

public function index(){ import("@.ORG.Page"); //导入分页类 $Dao = M(); $count = count($Dao->query("SELECT * FROM ofuser WHERE uid IN (SELECT uid FROM ofid WHERE uid ='1')"));//总计条数 $Page = new Page($count, 10); //一页中的数量为5 $list = $Dao-&