DeDeCms的分页处理PHP函数

由于客户的需求,导致不能直接使用DeDecms提供的DataList标签自带的分页,只能改为自己手动处理。

所以将DeDecms中Datalist自带的PageList抠出来。

由于时间有限只是简单的将其独立出来,并可以用于其他任务PHP网站。。。

并修正了原DeDecms获取地址栏参数的Bug

<?php   


    //获得当前网址
    function GetCurUrl()
    {
        if(!empty($_SERVER["REQUEST_URI"]))
        {
            $nowurl = $_SERVER["REQUEST_URI"];
            //$nowurls = explode("?",$nowurl);
            $nowurls = parse_url($nowurl);
            $nowurl = $nowurls['path'];
            $removeItems = array('pageno','totalresult');
            $querys = explode("&", $nowurls['query']);
            $query = array();
            foreach ( $querys as $item){
				if( empty($item) ) continue;
            	$item_arr = explode('=', $item);
            	if( !in_array($item_arr[0], $removeItems) ){
            		$query[] = "$item_arr[0]=$item_arr[1]";
            	}
            }
            $nowurl = $nowurls['path'].( empty($query)?'':'?'.implode('&', $query) );
        }
        else
        {
            $nowurl = $_SERVER["PHP_SELF"];
        }
        return $nowurl;
    }
    //获取分页导航列表
    function GetPageList($pageNO,$totalResult,$pageSize,$listsize=2,$listitem='info,index,end,pre,next,pageno',$hidenform='')
    {
        $lang_pre_page = '上页';
		$lang_next_page = '下页';
		$lang_index_page = '首页';
		$lang_end_page = '末页';
		$lang_record_number = '条记录';
		$lang_page = '页';
		$lang_total = '共';
    	
        $prepage = $nextpage = $geturl= '';
        $purl = GetCurUrl();
        $prepagenum = $pageNO-1;
        $nextpagenum = $pageNO+1;
        if(!isset($listsize) || preg_match("#[^0-9]#", $listsize))
        {
            $listsize = 5;
        }
        if(!isset($listitem))
        {
            $listitem = "info,index,end,pre,next,pageno";
        }
        $totalpage = ceil($totalResult/$pageSize);

        //echo " {$totalpage}=={$totalResult}=={$pageSize}";
        //无结果或只有一页的情况
        if($totalpage<=1 && $totalResult > 0)
        {
            return "<span>{$lang_total} 1 {$lang_page}/".$totalResult.$lang_record_number."</span>";
        }
        if($totalResult == 0)
        {
            return "<span>{$lang_total} 0 {$lang_page}/".$totalResult.$lang_record_number."</span>";
        }
        $infos = "<span>{$lang_total} {$totalpage} {$lang_page}/{$totalResult}{$lang_record_number} </span>";

        $purl .= (stristr($purl, '?') === FALSE?'?':'&').$geturl;

        //获得上一页和下一页的链接
        if($pageNO != 1)
        {
            $prepage .= "<a class='prePage' href='".$purl."pageno=$prepagenum'>$lang_pre_page</a> \n";
            $indexpage = "<a class='indexPage' href='".$purl."pageno=1'>$lang_index_page</a> \n";
        }
        else
        {
            $indexpage = "<span class='indexPage'>"."$lang_index_page \n"."</span>";
        }
        if($pageNO != $totalpage && $totalpage > 1)
        {
            $nextpage.="<a class='nextPage' href='".$purl."pageno=$nextpagenum'>$lang_next_page</a> \n";
            $endpage="<a class='endPage' href='".$purl."pageno=$totalpage'>$lang_end_page</a> \n";
        }
        else
        {
            $endpage=" <strong>$lang_end_page</strong> \n";
        }

        //获得数字链接
        $listdd = "";
        $total_list = $listsize * 2 + 1;
        if($pageNO >= $total_list)
        {
            $j = $pageNO - $listsize;
            $total_list=$pageNO + $listsize;
            if($total_list > $totalpage)
            {
                $total_list = $totalpage;
            }
        }
        else
        {
            $j=1;
            if($total_list > $totalpage)
            {
                $total_list = $totalpage;
            }
        }
        for($j; $j<=$total_list; $j++)
        {
            $listdd .= $j==$pageNO ? "<strong>$j</strong>\n" : "<a href='".$purl."pageno=$j'>".$j."</a>\n";
        }

        $plist = "<div class=\"pagelistbox\">\n";

        //info,index,end,pre,next,pageno,form
        if(preg_match("#info#i",$listitem))
        {
            $plist .= $infos;
        }
        if(preg_match("#index#i", $listitem))
        {
            $plist .= $indexpage;
        }
        if(preg_match("#pre#i", $listitem))
        {
            $plist .= $prepage;
        }
        if(preg_match("#pageno#i", $listitem))
        {
            $plist .= $listdd;
        }
        if(preg_match("#next#i", $listitem))
        {
            $plist .= $nextpage;
        }
        if(preg_match("#end#i", $listitem))
        {
            $plist .= $endpage;
        }
        if(preg_match("#form#i", $listitem))
        {
            $plist .=" <form name='pagelist' action='".GetCurUrl()."' style='float:left;' class='pagelistform'>$hidenform";
            if($totalpage>$total_list)
            {
                $plist.="<input type='text' name='pageno' style='padding:0px;width:30px;height:18px;font-size:11px' />\r\n";
                $plist.="<input type='submit' name='plistgo' value='GO' style='padding:0px;width:30px;height:22px;font-size:11px' />\r\n";
            }
            $plist .= "</form>\n";
        }
        $plist .= "</div>\n";
        return $plist;
    }
    
    echo GetPageList($_GET['pageno'],100,8, 2,'info,index,end,pre,next,pageno,form');


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值