您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

thinkphp分页类改造

2024/11/10 6:18:57发布25次查看
thinkphp自带的分页,没法通过配置让当前页页码显示在页码条中间(我的还是2.0,不知道3.0+可以了么),所以就改了下,效果还不错
'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>' %totalrow% %header% %nowpage%/%totalpage% 页 %uppage% %downpage% %first%  %prepage%  %linkpage%  %nextpage% %end%');
    protected $config  =    array('header'=>'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>'共 %totalrow% %header%   %uppage%  %linkpage% %downpage%');
/**
     +----------------------------------------------------------
     * 架构函数
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     * @param array $totalrows  总的记录数
     * @param array $listrows  每页显示记录数
     * @param array $parameter  分页跳转的参数
     +----------------------------------------------------------
     */
    public function __construct($totalrows,$listrows,$parameter='') {
        $this->totalrows = $totalrows;
        $this->parameter = $parameter;
        $this->rollpage = c('page_rollpage');
        $this->listrows = !empty($listrows)?$listrows:c('page_listrows');
        $this->totalpages = ceil($this->totalrows/$this->listrows);     //总页数
        $this->coolpages  = ceil($this->totalpages/$this->rollpage);
        $this->nowpage  = !empty($_get[c('var_page')]) ? $_get[c('var_page')]:1;
        if(!empty($this->totalpages) && $this->nowpage>$this->totalpages) {
            $this->nowpage = $this->totalpages;
        }
        $this->firstrow = $this->listrows*($this->nowpage-1);
    }
public function setconfig($name,$value) {
        if(isset($this->config[$name])) {
            $this->config[$name]    =   $value;
        }
    }
/**
     +----------------------------------------------------------
     * 分页显示输出
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     */
    public function show() {
        if(0 == $this->totalrows) return '';
        $p = c('var_page');
        $nowcoolpage      = ceil($this->nowpage/$this->rollpage);
        $url  =  $_server['request_uri'].(strpos($_server['request_uri'],'?')?'':?).$this->parameter;
        $parse = parse_url($url);
        if(isset($parse['query'])) {
            parse_str($parse['query'],$params);
            unset($params[$p]);
            $url   =  $parse['path'].'?'.http_build_query($params);
        }
        //上下翻页字符串
        $uprow   = $this->nowpage-1;
        $downrow = $this->nowpage+1;
        if ($uprow>0){
            $uppage=.$this->config['prev'].;
        }else{
            $uppage=上一页;
        }
if ($downrow totalpages){
            $downpage=.$this->config['next'].;
        }else{
            $downpage=下一页 ;
        }
        //  >>    //
        /*if($nowcoolpage == 1){
            $thefirst = ;
            $prepage = ;
        }else{
            $prerow =  $this->nowpage-$this->rollpage;
            $prepage = 上.$this->rollpage.页;
            $thefirst = .$this->config['first'].;
        }
        if($nowcoolpage == $this->coolpages){
            $nextpage = ;
            $theend=;
        }else{
            $nextrow = $this->nowpage+$this->rollpage;
            $theendrow = $this->totalpages;
            $nextpage = 下.$this->rollpage.页;
            $theend = .$this->config['last'].;
        }
     */
    // 1 2 3 4 5
$linkpage = ;
    if($totalpage rollpage){
        for($i = 1;$itotalpages;$i++){        //若页码数不够设置的显示页数 ,比如设置显示5页,但只有3页数据
            if($i == $this->nowpage){
                $linkpage .= .$i.;
            }else{
                $linkpage .= .$i.;
            }
        }
    }else{
        $mid = ceil($this->rollpage/2);
        if($this->nowpage >= $mid && $this->nowpage totalpages - $mid)){    //当前页在页码中间靠右时,保持左边有2个页码
            $this->page = $this->nowpage - ($this->rollpage/2 - 1);//这个2使当前页保持在中间(每次显示5个页码时),如果一次显示7个页码,改成3即可保持当前页在中间
            for($i = 1; $i rollpage; $i++){
                if($this->page == $this->nowpage){
                    $linkpage .= .$this->page.;
                }else{
                    $linkpage .= page'>.$this->page.;
                }
                $this->page++;
            }
        }elseif($this->nowpage             for($i = 1; $i rollpage; $i++){                //如1234567 当前页为3
                $this->page = $i;
                if($this->page == $this->nowpage){
                    $linkpage .= .$this->page.;
                }else{
                    $linkpage .= page'>.$this->page.;
                }
            }
        }elseif($this->nowpage > $this->totalpages - $mid){                //当前页在coolpages是最后一页时,直接循环出剩下的页面就行
            for($i = $this->totalpages - $this->rollpage + 1; $i totalpages; $i++){
                $this->page = $i;
                if($this->page == $this->nowpage){
                    $linkpage .= .$this->page.;
                }else{
                    $linkpage .= page'>.$this->page.;
                }
            }
}
    }
$pagestr     =     str_replace(
            array('%header%','%nowpage%','%totalrow%','%totalpage%','%uppage%','%downpage%','%first%','%prepage%','%linkpage%','%nextpage%','%end%'),
            array($this->config['header'],$this->nowpage,$this->totalrows,$this->totalpages,$uppage,$downpage,$thefirst,$prepage,$linkpage,$nextpage,$theend),$this->config['theme']);
        return $pagestr;
    }
}
?>
ad:真正免费,域名+虚机+企业邮箱=0元
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product