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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
PHP IN_ARRAY 函数使用注意事项
Jul 24 PHP
深入密码加salt原理的分析
Jun 06 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 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
PHP mysql事务问题实例分析
2016/01/18 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python中的self用法详解
2019/08/06 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
python Pexpect模块的使用
2020/12/25 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
数组越界问题
2015/10/21 面试题
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
小学数学教学反思
2014/02/02 职场文书
团日活动总结书
2014/05/08 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
Java常用函数式接口总结
2021/06/29 Java/Android