由于客户的需求,导致不能直接使用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');