您现在的位置是:网站首页 > 脚本编程>

thinkphp 分页带有省略号实现方式

2016-03-04495人围观
简介 thinkphp 默认的分页样式很不好看,分页多了就会出现样式错乱,如何实现分页带有省略号呢?其实方法很简单。这个方法纯天然,无公害。 代码如下: class IndexAction extends Action {     public function index() {      ...

    thinkphp 默认的分页样式很不好看,分页多了就会出现样式错乱,如何实现分页带有省略号呢?其实方法很简单。这个方法纯天然,无公害。

    代码如下:

class IndexAction extends Action {
    public function index() {        
        $M = M("Article_21");
        $count = $M->count();
        import("ORG.Util.Page"); 
        $page = new Page($count, 10);
        //$showPage = $page->show();//Thinkphp原有的方法
        $showPage = $page->shows();//自定义的方法
        $list=$M->limit($page->firstRow, $page->listRows)->select();;
        
        $this->assign("page", $showPage);
        $this->assign("list",$list);
        $this->display();
    }
}

    找到Thinkphp核心包中的分页类

    在下面添加一下代码:

public function shows()
    {
    $adjacents=2;
    if(0 == $this->totalRows) return '';
    $p              =   $this->varPage;
    $nowCoolPage    =   ceil($this->nowPage/$this->rollPage);
        
    // 分析分页参数
    if($this->url){
        $depr       =   C('URL_PATHINFO_DEPR');
        $url        =   rtrim(U('/'.$this->url,'',false),$depr).$depr.'__PAGE__';
    }else{
        if($this->parameter && is_string($this->parameter)) {
            parse_str($this->parameter,$parameter);
        }elseif(is_array($this->parameter)){
            $parameter      =   $this->parameter;
        }elseif(empty($this->parameter)){
            unset($_GET[C('VAR_URL_PARAMS')]);
            $var =  !empty($_POST)?$_POST:$_GET;
            if(empty($var)) {
                $parameter  =   array();
            }else{
                $parameter  =   $var;
            }
        }
        $parameter[$p]  =   '__PAGE__';
        $url            =   U('',$parameter);
    }    
    
    //上下翻页字符串
    $upRow          =   $this->nowPage-1;
    $downRow        =   $this->nowPage+1;
    
    // 上一页
    if ($upRow>0){
         $pages.=   "<a href='".str_replace('__PAGE__',$upRow,$url)."' class='prev'>".$this->config['prev']."</a>";
    }else{
         $pages.=   "<a class='prev current'>".$this->config['prev']."</a>";
    }
     
    //第一页
    if($this->nowPage>($adjacents+1)) {
        $pages.= "<a href='".str_replace('__PAGE__',1,$url)."'>1</a>";
    }
     
    // 添加省略号
    if($this->nowPage>($adjacents+2)) {
        $pages.= "<a>...</a>";
    }
     
    // 12345
    $pmin = ($this->nowPage>$adjacents) ? ($this->nowPage-$adjacents) : 1;
    $pmax = ($this->nowPage<($this->totalPages-$adjacents)) ? ($this->nowPage+$adjacents) : $this->totalPages;
    for($i=$pmin; $i<=$pmax; $i++) {
        if($i==$this->nowPage) {
            $pages.= "<a class='current'>".$i."</a>";
        }else{
            $pages.= "<a href='".str_replace('__PAGE__',$i,$url)."'>".$i."</a>";
        }
    }
     
    // 添加省略号
    if($this->nowPage < ($this->totalPages-$adjacents-1)) {
        $pages.= "<a>...</a>";
    }
     
    // 最后一页
    if($this->nowPage<($this->totalPages-$adjacents)) {
        
        $pages.= "<a href='".str_replace('__PAGE__',$this->totalPages,$url)."'>".$this->totalPages."</a>";
    }
     
    // 下一页
    if ($downRow <= $this->totalPages){
         $pages.=   "<a href='".str_replace('__PAGE__',$downRow,$url)."' class='next'>".$this->config['next']."</a>";
    }else{
        $pages.=   "<a  class='next current'>".$this->config['next']."</a>";
    }
    return $pages;
    }

    html代码:

<html>
    <head>
        <title></title>
    </head>
    <style>
    a{text-decoration:none;}
    .pages a{
    border: 1px solid #ccc;
    display: inline-block;
    height: 20px;
    line-height: 20px;
    margin: 0 5px;
    text-align: center;
    width: 20px;
    color:#222;
    background-color:#eee;
    }
    .pages >.prev {width:60px;}
    .pages >.next {width:60px;}
    .pages >.current{color:red;border: 1px solid red;}
    .box ul li{list-style:none;}
    </style>
    <body>
        <div>
            <div class="box">
                <ul>
                <volist name="list" id="v" key="k"> 
                    <li>{$k}->{$v.title}</li>
                </volist>    
                </ul>
            </div>
            <div class="pages">
                {$page}
            </div>
        </div>
    </body>
</html>

    效果图:

打赏本站,你说多少就多少

精彩评论

微信关注

Copyright © 2013-2019 千奇博客 保留所有权利 辽ICP备13008238号