TP5框架实现自定义分页样式的方法示例


Posted in PHP onApril 05, 2020

本文实例讲述了TP5框架实现自定义分页样式的方法。分享给大家供大家参考,具体如下:

1. 在extend\目录下创建page目录,在page目录下创建Page.php文件,将以下代码放入文件中。

<?php
namespace page;
use think\Paginator;
class Page extends Paginator
{
 
  //首页
  protected function home() {
    if ($this->currentPage() > 1) {
      return "<a href='" . $this->url(1) . "' title='首页'>首页</a>";
    } else {
      return "<p>首页</p>";
    }
  }
 
  //上一页
  protected function prev() {
    if ($this->currentPage() > 1) {
      return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一页'>上一页</a>";
    } else {
      return "<p>上一页</p>";
    }
  }
 
  //下一页
  protected function next() {
    if ($this->hasMore) {
      return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一页'>下一页</a>";
    } else {
      return"<p>下一页</p>";
    }
  }
 
  //尾页
  protected function last() {
    if ($this->hasMore) {
      return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";
    } else {
      return "<p>尾页</p>";
    }
  }
 
  //统计信息
  protected function info(){
    return "<p class='pageRemark'>共<b>" . $this->lastPage .
      "</b>页<b>" . $this->total . "</b>条数据</p>";
  }
 
  /**
   * 页码按钮
   * @return string
   */
  protected function getLinks()
  {
 
    $block = [
      'first' => null,
      'slider' => null,
      'last'  => null
    ];
 
    $side  = 3;
    $window = $side * 2;
 
    if ($this->lastPage < $window + 6) {
      $block['first'] = $this->getUrlRange(1, $this->lastPage);
    } elseif ($this->currentPage <= $window) {
      $block['first'] = $this->getUrlRange(1, $window + 2);
      $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    } elseif ($this->currentPage > ($this->lastPage - $window)) {
      $block['first'] = $this->getUrlRange(1, 2);
      $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
    } else {
      $block['first'] = $this->getUrlRange(1, 2);
      $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
      $block['last']  = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    }
 
    $html = '';
 
    if (is_array($block['first'])) {
      $html .= $this->getUrlLinks($block['first']);
    }
 
    if (is_array($block['slider'])) {
      $html .= $this->getDots();
      $html .= $this->getUrlLinks($block['slider']);
    }
 
    if (is_array($block['last'])) {
      $html .= $this->getDots();
      $html .= $this->getUrlLinks($block['last']);
    }
 
    return $html;
  }
 
  /**
   * 渲染分页html
   * @return mixed
   */
  public function render()
  {
    if ($this->hasPages()) {
      if ($this->simple) {
        return sprintf(
          '%s<div class="pagination">%s %s %s</div>',
          $this->css(),
          $this->prev(),
          $this->getLinks(),
          $this->next()
        );
      } else {
        return sprintf(
          '%s<div class="pagination">%s %s %s %s %s %s</div>',
          $this->css(),
          $this->home(),
          $this->prev(),
          $this->getLinks(),
          $this->next(),
          $this->last(),
          $this->info()
        );
      }
    }
  }
 
  /**
   * 生成一个可点击的按钮
   *
   * @param string $url
   * @param int  $page
   * @return string
   */
  protected function getAvailablePageWrapper($url, $page)
  {
    return '<a href="' . htmlentities($url) . '" rel="external nofollow" title="第"'. $page .'"页" >' . $page . '</a>';
  }
 
  /**
   * 生成一个禁用的按钮
   *
   * @param string $text
   * @return string
   */
  protected function getDisabledTextWrapper($text)
  {
    return '<p class="pageEllipsis">' . $text . '</p>';
  }
 
  /**
   * 生成一个激活的按钮
   *
   * @param string $text
   * @return string
   */
  protected function getActivePageWrapper($text)
  {
    return '<a href="" class=" rel="external nofollow" cur">' . $text . '</a>';
  }
 
  /**
   * 生成省略号按钮
   *
   * @return string
   */
  protected function getDots()
  {
    return $this->getDisabledTextWrapper('...');
  }
 
  /**
   * 批量生成页码按钮.
   *
   * @param array $urls
   * @return string
   */
  protected function getUrlLinks(array $urls)
  {
    $html = '';
 
    foreach ($urls as $page => $url) {
      $html .= $this->getPageLinkWrapper($url, $page);
    }
 
    return $html;
  }
 
  /**
   * 生成普通页码按钮
   *
   * @param string $url
   * @param int  $page
   * @return string
   */
  protected function getPageLinkWrapper($url, $page)
  {
    if ($page == $this->currentPage()) {
      return $this->getActivePageWrapper($page);
    }
 
    return $this->getAvailablePageWrapper($url, $page);
  }
 
  /**
   * 分页样式
   */
  protected function css(){
    return ' <style type="text/css">
      .pagination p{
        margin:0;
        cursor:pointer
      }
      .pagination{
        height:40px;
        padding:20px 0px;
      }
      .pagination a{
        display:block;
        float:left;
        margin-right:10px;
        padding:2px 12px;
        height:24px;
        border:1px #cccccc solid;
        background:#fff;
        text-decoration:none;
        color:#808080;
        font-size:12px;
        line-height:24px;
      }
      .pagination a:hover{
        color:#077ee3;
        background: white;
        border:1px #077ee3 solid;
      }
      .pagination a.cur{
        border:none;
        background:#077ee3;
        color:#fff;
      }
      .pagination p{
        float:left;
        padding:2px 12px;
        font-size:12px;
        height:24px;
        line-height:24px;
        color:#bbb;
        border:1px #ccc solid;
        background:#fcfcfc;
        margin-right:8px;
      }
      .pagination p.pageRemark{
        border-style:none;
        background:none;
        margin-right:0px;
        padding:4px 0px;
        color:#666;
      }
      .pagination p.pageRemark b{
        color:red;
      }
      .pagination p.pageEllipsis{
        border-style:none;
        background:none;
        padding:4px 0px;
        color:#808080;
      }
      .dates li {font-size: 14px;margin:20px 0}
      .dates li span{float:right}
    </style>';
  }
}

2. 修改  application\config.php  中的配置文件即可

//分页配置 
  'paginate'        => [ 
    'type'   => 'page\Page',//分页类 
    'var_page' => 'page', 
    'list_rows' => 15, 
  ],

3. 分页样式为 TP5框架实现自定义分页样式的方法示例

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP实现图象锐化代码
Jun 14 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
Yii实现显示静态页的方法
Apr 25 PHP
php 的反射详解及示例代码
Aug 25 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 #PHP
TP5框架实现签到功能的方法分析
Apr 05 #PHP
TP5框架页面跳转样式操作示例
Apr 05 #PHP
TP5框架实现的数据库备份功能示例
Apr 05 #PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 #PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 #PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 #PHP
You might like
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
PHP中的替代语法简介
2014/08/22 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
Python中文编码那些事
2014/06/25 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python中装饰器学习总结
2018/02/10 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python函数和模块的使用总结
2019/05/20 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
请说出几个常用的异常类
2013/01/08 面试题
人力资源主管岗位职责
2014/01/29 职场文书
护士求职信
2014/07/05 职场文书
年检委托书
2014/08/30 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2014年科协工作总结
2014/12/09 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
nginx请求限制配置方法
2021/07/09 Servers