Thinkphp5 重写page.php(分页)方法

找到page.php 修改

<?php
namespace think\paginator\driver;

use think\Paginator;

class Page extends Paginator
{

    //首页
    protected function home() {
        if ($this->currentPage() > 1) {
            return "<a href='javascript:cg_ajax_page(1)' class='page_click' page='1' >首页</a>";
        } else {
            return "<p>首页</p>";
        }
    }

    //上一页
    protected function prev() {
        if ($this->currentPage() > 1) {
            $page = $this->currentPage-1;
            return "<a href='javascript:cg_ajax_page(".$page.")' class='page_click' page='".$page."' >上一页</a>";
        } else {
            return "<p>上一页</p>";
        }
    }

    //下一页
    protected function next() {
        if ($this->hasMore) {
            $page = $this->currentPage+1;
            return "<a href='javascript:cg_ajax_page(".$page.")' class='page_click' page='".$page."' >下一页</a>";
        } else {
            return"<p>下一页</p>";
        }
    }

    //尾页
    protected function last() {
        if ($this->hasMore) {
            return "<a href='javascript:cg_ajax_page(".$this->lastPage.")' class='page_click' page='".$this->lastPage."' >末页</a>";
        } else {
            return "<p>末页</p>";
        }
    }

    //统计信息
    protected function info(){
        return "";

        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="javascript:cg_ajax_page('.$page.')" class="page_click" page="'.$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($url,$text)
    {
        header("Content-type:text/html;charset=utf-8");
        return '<a href="javascript:;" class="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($url,$page);
        }

        return $this->getAvailablePageWrapper($url, $page);
    }

    /**
     * 分页样式
     * 如果分页样式不生效 可以把样式放到公用css文件里 或自己重写
     */
    protected function css(){
        return '
		.pagination{ width:100%;margin:0 auto; overflow:hidden; box-sizing:border-box; padding:0px 0;}
		.pagination p{ float:left;margin-right:10px; margin-bottom:10px;}
		.pagination a{ float:left;margin-right:10px; margin-bottom:10px;}
		.pagination p{display:block;box-sizing:border-box; font-size:14px; color:#555;padding:6px 14px; border-radius:3px;border:1px solid #aaa;cursor:pointer;
		transition:0.3s; background:#fff;}
		.pagination a{display:block;box-sizing:border-box; font-size:14px; color:#555;padding:6px 14px; border-radius:3px;border:1px solid #aaa;cursor:pointer;
		transition:0.3s; background:#fff;}
		.pagination a:hover { border:1px solid #d31919; background:#d31919; color:#fff;}
		.pagination a.cur{ border:1px solid #d31919; background:#d31919; color:#fff;}
				';
    }
}

HTML中引入jq

<script type="text/javascript">
    function cg_ajax_page(page){
        var url = "/admin.php/index/ajax/getdatapage?page="+page;
        // 表名  where条件  排序 条数 
        $.post(url,{table:"{$data_table}",where:"{$data_where}",order:"{$data_order}",limit:"{$data_limit}"},function(data){
          //console.log(data['data']['data'].length);
          var html = "";
          //查询之后返回 遍历 追加到HTML中 data['data']为返回值
          for (var i=0; data['data']['data'].length>i;i++) {
              html +='<li><a href="/new/'+data['data']['data'][i]['id']+'.html"><div class="nttop"><div class="ntll"><img src="__TEMP__/images/lbwj.png" alt=""/><h3>'+data['data']['data'][i]['title']+'</h3></div><div class="djzz"><img src="__TEMP__/images/rh.png"/><h4>立即下载</h4></div></div><div class="sjllb"><h5 class="sjjh">'+data['data']['data'][i]['issuetime']+'</h5><h5 class="liula">'+data['data']['data'][i]['pv']+'</h5></div></a></li>';
                }
           //给class 命为ull 的追加遍历好的html 
          $(".ull").html(html);
          // 分页输出
          $(".fyan").html(data['page']);
        },"json")
    }
</script>

PHP文件

//根据表名条件等查询出之后  返回json格式的数据  其中部分内容做了一些数据处理  可删减
public function getdatapage(){
        $data['data'] = db(input("table"),"",false)->where(input("where"))->order(input("order"))->paginate(input("limit"));

        $data['page'] = $data['data']->render();
        $data['data'] = json_decode(json_encode($data['data']),true);
        if(input("table")=="article"){
            foreach ($data['data']['data'] as &$v) {
                $v['img'] = json_decode($v['img'],true);
                $v['img'] = $v['img'][0];
                $v['content'] = de_e($v['content'],200);
                $v['Y'] = date("Y",$v['issuetime']);
                $v['y'] = date("y",$v['issuetime']);
                $v['m'] = date("m",$v['issuetime']);
                /*$v['d'] = date("d",$v['issuetime']);
                $v['H'] = date("H",$v['issuetime']);
                $v['i'] = date("i",$v['issuetime']);
                $v['s'] = date("s",$v['issuetime']);*/
                $v['issuetime'] = date("Y-m-d",$v['issuetime']);
                $v['cname'] = db("category")->where('id',$v['cid'])->field('title')->find();
            }
        }else if(input("table")=="pv"){
            foreach ($data['data']['data'] as &$v) {
                $v['lyurl'] = de_e($v['lyurl'],100);
            }
        }else if(input("table") == "friendship"){
            foreach ($data['data']['data'] as &$v) {
                $v['img'] = json_decode($v['img'],true);
                $v['img'] = $v['img'][0];
            }
        }
        echo json_encode($data);
    }

------------------------------------------------ The end ------------------------------------------------
感谢臣哥

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wise man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值