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 addslashes和mysql_real_escape_string
Jan 24 PHP
一个PHP分页类的代码
May 18 PHP
php实现的ping端口函数实例
Nov 12 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php需登录的文件上传管理系统
Mar 21 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
php文件上传类完整实例
May 14 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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安装全攻略:APACHE
2006/10/09 PHP
MYSQL数据库初学者使用指南
2006/11/16 PHP
php print EOF实现方法
2009/05/21 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
React快速入门教程
2017/01/17 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python中logging模块的用法实例
2014/09/29 Python
python之Character string(实例讲解)
2017/09/25 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Django中create和save方法的不同
2019/08/13 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
最好的商品表达自己:Cafepress
2019/09/04 全球购物
国旗下演讲稿
2014/05/08 职场文书
低碳环保口号
2014/06/12 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
项目安全员岗位职责
2015/02/15 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技