thinkphp框架page类与bootstrap分页(美化)


Posted in PHP onJune 25, 2017

bootstrap分样式使用方法这里写链接内容

<nav aria-label="Page navigation">
 <ul class="pagination">
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Previous">
    <span aria-hidden="true">«</span>
   </a>
  </li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a></li>
  <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a></li>
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Next">
    <span aria-hidden="true">»</span>
   </a>
  </li>
 </ul>
</nav>

1.找到Thinkphp中的Page.class.php,然后使用下面的文件内容完全替换

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Think;
class Page{
  public $firstRow; // 起始行数
  public $listRows; // 列表每页显示行数
  public $parameter; // 分页跳转时要带的参数
  public $totalRows; // 总行数
  public $totalPages; // 分页总页面数
  public $rollPage  = 11;// 分页栏每页显示的页数
  public $lastSuffix = true; // 最后一页是否显示总页数
  private $p    = 'p'; //分页参数名
  private $url   = ''; //当前链接URL
  private $nowPage = 1;
  // 分页显示定制
  private $config = array(
    'header' => '<li><span>共 %TOTAL_ROW% 条记录<span class="sr-only"></span></span></li>',
    'prev'  => '<<',
    'next'  => '>>',
    'first' => '1...',
    'last'  => '...%TOTAL_PAGE%',
    'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
  );
  /**
   * 架构函数
   * @param array $totalRows 总的记录数
   * @param array $listRows 每页显示记录数
   * @param array $parameter 分页跳转的参数
   */
  public function __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);
  }
  /**
   * 定制分页链接设置
   * @param string $name 设置名称
   * @param string $value 设置值
   */
  public function setConfig($name,$value) {
    if(isset($this->config[$name])) {
      $this->config[$name] = $value;
    }
  }
  /**
   * 生成链接URL
   * @param integer $page 页码
   * @return string
   */
  private function url($page){
    return str_replace(urlencode('[PAGE]'), $page, $this->url);
  }
  /**
   * 组装分页链接
   * @return string
   */
  public function show() {
    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);
    $this->lastSuffix && $this->config['last'] = $this->totalPages;
    //上一页
    $up_row = $this->nowPage - 1;
    $up_page = $up_row > 0 ? '<li><a class="prev" href="' . $this->url($up_row) . '" rel="external nofollow" >' . $this->config['prev'] . '</a></li>' : '';
    //下一页
    $down_row = $this->nowPage + 1;
    $down_page = ($down_row <= $this->totalPages) ? '<li><a class="next" href="' . $this->url($down_row) . '" rel="external nofollow" >' . $this->config['next'] . '</a></li>' : '';
    //第一页
    $the_first = '';
    if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
      $the_first = '<li><a class="first" href="' . $this->url(1) . '" rel="external nofollow" >' . $this->config['first'] . '</a></li>';
    }
    //最后一页
    $the_end = '';
    if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
      $the_end = '<li><a class="end" href="' . $this->url($this->totalPages) . '" rel="external nofollow" >' . $this->config['last'] . '</a></li>';
    }
    //数字连接
    $link_page = "";
    for($i = 1; $i <= $this->rollPage; $i++){
      if(($this->nowPage - $now_cool_page) <= 0 ){
        $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;
      }
      if($page > 0 && $page != $this->nowPage){
        if($page <= $this->totalPages){
          $link_page .= '<li><a class="num" href="' . $this->url($page) . '" rel="external nofollow" >' . $page . '</a></li>';
        }else{
          break;
        }
      }else{
        if($page > 0 && $this->totalPages != 1){
          $link_page .= '<li class="active "><span>'.$page.'<span class="sr-only"></span></span></li>';
        }
      }
    }
    //替换分页内容
    $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 "<ul class='pagination'>{$page_str}</ul>";
  }
}

2.相关控制器代码

//所有新闻
  public function all_news(){
    $Article=M("Article");
    $where['article_type']=1;
    //查询满足要求的总的记录数
    $count=$Article->where($where)->count();
    //实例化分页类传入总记录数和煤业显示的记录数
    $Page=new \Think\Page($count,1);
    //分页显示输出
    $show=$Page->show();
    // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
    $news=$Article->where($where)->order('pub_time')->field('id,title,institution_type,author_name,pub_time')->limit($Page->firstRow.','.$Page->listRows)->select();
    //赋值数据集
    $this->assign('news',$news);
    //赋值分页输出
    $this->assign('page',$show);
    $this->display();
  }

3.html中只需要

<div class="panel-body center">
           {$page}

以上所述是小编给大家介绍的thinkphp框架page类与bootstrap分页(美化),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

PHP 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
phpstudy2020搭建站点的实现示例
Oct 30 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 #PHP
php-fpm开启状态统计的方法详解
Jun 23 #PHP
PHP多种序列化/反序列化的方法详解
Jun 23 #PHP
PHP后端银联支付及退款实例代码
Jun 23 #PHP
PHP单例模式简单用法示例
Jun 23 #PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 #PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 #PHP
You might like
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python绘制条形图方法代码详解
2017/12/19 Python
python 抓包保存为pcap文件并解析的实例
2019/07/23 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
怎样写好创业计划书的内容
2014/02/06 职场文书
大学生个人自荐信
2014/02/24 职场文书
小学生演讲稿大全
2014/04/25 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
大学生暑假实习总结
2015/07/13 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书