服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - PHP教程 - thinkphp框架page类与bootstrap分页(美化)

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

2021-05-31 17:13Ethen_Xie PHP教程

这篇文章主要介绍了thinkphp框架page类与bootstrap分页(美化) ,需要的朋友可以参考下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<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">&laquo;</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">&raquo;</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.相关控制器代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//所有新闻
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中只需要

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

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

原文链接:http://blog.csdn.net/ethen_xie/article/details/73717491

延伸 · 阅读

精彩推荐