TP5分页样式修改

浏览:38776 发布日期:2017/04/10 分类:功能实现 关键字: tp5 分页 样式
感觉tp5的自带的分页样式用的不怎么习惯,也不太好控制显示页码的数量;
自己正好也有项目用到这一块的,就对样式进行了一些修改;
在这里分享给大家,大家有兴趣的话可以下载看一下!

基础的分页调用/**
*  控制器部分代码
 */
//实例化模型
$areasModel=new Areas();
//分页数据集
$listarea=$areasModel->paginate($page);
//分页显示输出
$page=$listarea->render();
//模板赋值
$this->assign('listarea',$listarea);
$this->assign('page', $page);

/**
*  模板页面部分代码
 */
{$page}//分页输出
{$listarea->total()}//数据总数
{$listarea->lastPage()}//总页数
{$listarea->currentPage()}//当前页
分页类修改,写了三个样式;
代码比较多,这里就不全部贴出来了!public $rollPage=5;//分页栏每页显示的页数
public $showPage=12;//总页数超过多少条时显示的首页末页

/**
 * 分页样式一:首页末页不管何时都显示
 * 
 * 分页样式二:前n页时不显示首页,后n页时不显示末页;n=分页栏数/2(向下取整)
 */

//样式1和样式2核心代码

/**
     * 页码按钮
     * @return string
     */
    protected function getLinks()
    {
        if ($this->simple)
            return '';

        $block = [
            'first'  => null,
            'slider' => null,
            'last'   => null
        ];

        $rollPage = $this->rollPage;//分页栏每页显示的页数
        $nowPage = floor($rollPage/2);//计算分页临时变量
        
        if($this->lastPage <= $rollPage){
            $block['first'] = $this->getUrlRange(1, $this->lastPage);
        }else if($this->currentPage <= $nowPage){
            $block['first'] = $this->getUrlRange(1, $rollPage);
        }else if($this->currentPage >= ($this->lastPage - $nowPage)){
            $block['first'] = $this->getUrlRange($this->lastPage - $rollPage+1, $this->lastPage);
        }else{
            $block['first'] = $this->getUrlRange($this->currentPage - $nowPage, $this->currentPage + $nowPage);
        }
        $html = '';

        if (is_array($block['first'])) {
            $html .= $this->getUrlLinks($block['first']);
        }

        return $html;
    }

/**
 * 分页样式三
 * 按照段分页,具体的效果可以自己下载代码
 * 
 * 例1:1-5,4-8,7-11,...
 * 在第一段时:点击5时跳到下一段
 * 在第二段时:点击8时跳到下一段,点击4时回到上一段
 * 
 * 例2:1-7,6-12,11-17,...
 * 在第二段时:点击12时跳到下一段点击6时回到上一段
 * 在第三段时:点击17时跳到下一段,点击11时回到上一段
 * 
 */

//核心代码

/**
     * 页码按钮
     * @return string
     */
    protected function getLinks()
    {
        if ($this->simple)
            return '';

        $block = [
            'first'  => null,
            'slider' => null,
            'last'   => null
        ];

        $rollPage = $this->rollPage;//分页栏每页显示的页数
        $nowPage = floor($rollPage/2);//计算分页临时变量
        
        if($this->lastPage <= $rollPage){
            $block['first'] = $this->getUrlRange(1, $this->lastPage);
        }else if($this->currentPage==0 || $this->currentPage<$rollPage){
            $block['first'] = $this->getUrlRange(1, $rollPage);
        }else{
            $n=floor(($this->currentPage+($rollPage-4))/($rollPage-2));
            $start=$n*($rollPage-2)-($rollPage-3);
            $end=$start+$rollPage-1;
            $end=$end>$this->lastPage ? $this->lastPage : $end;
            $block['first'] = $this->getUrlRange($start,$end);
        }
        $html = '';

        if (is_array($block['first'])) {
            $html .= $this->getUrlLinks($block['first']);
        }

        return $html;
    }
总共写了三种样式,大家看一下哪个喜欢就用那个!

样式一图:

样式二图:

样式三图:



样式一:Bootstrap3
样式二:Bootstrap4
样式三:Bootstrap5

用法:将文件复制到 thinkphp/library/think/paginator/driver/ 目录下面,
用哪个样式就将配置文件里面的type改成对应的样式就行了;
例如:'type' => 'bootstrap5',
bootstrap下载地址:https://www.yinhoujie.cn/other/bootstrap.zip

附件 Bootstrap分页类.rar ( 4.6 KB 下载:2564 次 )

评论( 相关
后面还有条评论,点击查看>>