帝国CMS 实际有三套分页逻辑,分别用在不同的场景。搞清楚它们的区别,才知道改哪里。
下拉式分页
[!--show.page--]
这种方式的分页可以在后台“模板”-> 公共模板管理 -> 列表分页模板 做一些简单的html定制化
列表式分页
[!--show.listpage--]
这种方式的html完全写死在php代码中,后台管理页面没有地方可以修改
这两种模板的分页标签默认都在这个函数中处理的 e\class\t_functions.php

sys_ShowListPage
function sys_ShowListPage($num,$pagenum,$dolink,$dotype,$page,$lencord,$ok,$search="",$add=null){
global $fun_r;
//文件名
if(empty($add['dofile']))
{
$add['dofile']='index';
}
//静态页数
$repagenum=$add['repagenum'];
//首页
if($pagenum<>1)
{
$pagetop="<a href='".$dolink.$add['dofile'].$dotype."'>".$fun_r['startpage']."</a> ";
}
else
{
$pagetop=$fun_r['startpage']." ";
}
//上一页
if($pagenum<>1)
{
$pagepr=$pagenum-1;
if($pagepr==1)
{
$prido=$add['dofile'].$dotype;
}
else
{
$prido=$add['dofile'].'_'.$pagepr.$dotype;
}
$pagepri="<a href='".$dolink.$prido."'>".$fun_r['pripage']."</a> ";
}
else
{
$pagepri=$fun_r['pripage']." ";
}
//下一页
if($pagenum<>$page)
{
$pagenex=$pagenum+1;
$nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$dotype;
$pagenext="<a href='".$nextpagelink."'>".$fun_r['nextpage']."</a> ";
}
else
{
$pagenext=$fun_r['nextpage']." ";
}
//尾页
if($pagenum==$page)
{
$pageeof=$fun_r['lastpage'];
}
else
{
$lastpagelink=$repagenum&&$repagenum<$page?eReturnRewritePageLink2($add,$page):$dolink.$add['dofile'].'_'.$page.$dotype;
$pageeof="<a href='".$lastpagelink."'>".$fun_r['lastpage']."</a>";
}
$options="";
//取得下拉页码
if(empty($search))
{
for($go=1;$go<=$page;$go++)
{
if($go==1)
{$file=$add['dofile'].$dotype;}
else
{$file=$add['dofile'].'_'.$go.$dotype;}
$thispagelink=$repagenum&&$repagenum<$go?eReturnRewritePageLink2($add,$go):$dolink.$file;
if($ok==$go)
{$select=" selected";}
else
{$select="";}
$myoptions.="<option value='".$thispagelink."'>".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";
$options.="<option value='".$thispagelink."'".$select.">".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";
}
}
else
{
$myoptions=$search;
$options=str_replace("value='".$dolink.$add['dofile'].'_'.$ok.$dotype."'>","value='".$dolink.$add['dofile']."_".$ok.$dotype."' selected>",$search);
}
$options="<select name=select onchange=\"self.location.href=this.options[this.selectedIndex].value\">".$options."</select>";
//分页
$pagelink=$pagetop.$pagepri.$pagenext.$pageeof;
//替换模板变量
$pager['showpage']=ReturnListpageStr($pagenum,$page,$lencord,$num,$pagelink,$options);
$pager['option']=$myoptions;
return $pager;
}
以上两种方式定制性都不高,如果要求更加灵活可以到 后台->系统参数设置->信息设置

设置 列表分页函数(下拉) 和 列表分页函数(列表) 相应的函数名,然后到e/class/userfun.php实现相应的函数,代码的话可以参考系统默认的sys_ShowListPage
动态列表页
这个又是在connect.php文件中实现的page1分页函数,要定制的化也是改代码
//前台分页
function page1($num,$line,$page_line,$start,$page,$search){
global $fun_r;
$num=(int)$num;
$line=(int)$line;
$page_line=(int)$page_line;
$start=(int)$start;
$page=(int)$page;
if($num<=$line)
{
return '';
}
$search=RepPostStr($search,1);
$url=eReturnSelfPage(0).'?page';
$snum=2;//最小页数
$totalpage=ceil($num/$line);//取得总页数
$firststr='<a title="'.$fun_r['trecord'].'"> <b>'.$num.'</b> </a> ';
//上一页
if($page<>0)
{
$toppage='<a href="'.$url.'=0'.$search.'">'.$fun_r['startpage'].'</a> ';
$pagepr=$page-1;
$prepage='<a href="'.$url.'='.$pagepr.$search.'">'.$fun_r['pripage'].'</a>';
}
//下一页
if($page!=$totalpage-1)
{
$pagenex=$page+1;
$nextpage=' <a href="'.$url.'='.$pagenex.$search.'">'.$fun_r['nextpage'].'</a>';
$lastpage=' <a href="'.$url.'='.($totalpage-1).$search.'">'.$fun_r['lastpage'].'</a>';
}
$starti=$page-$snum<0?0:$page-$snum;
$no=0;
for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
{
$no++;
if($page==$i)
{
$is_1="<b>";
$is_2="</b>";
}
else
{
$is_1='<a href="'.$url.'='.$i.$search.'">';
$is_2="</a>";
}
$pagenum=$i+1;
$returnstr.=" ".$is_1.$pagenum.$is_2;
}
$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
return $returnstr;
}




