帝国cms的全站全文搜索,分页格式如何修改? 以下分析抽丝剥茧:
帝国后台,公共模板,全站搜索模板, [!--listpage--]
e/class/functions.php 生成全站搜索文件
//生成全站搜索文件 function ReSchAlltemp(){ global $empire,$public_r,$fun_r,$dbtbpre; $tfile=eReturnTrueEcmsPath()."//生成全站搜索文件 function ReSchAlltemp(){ global $empire,$public_r,$fun_r,$dbtbpre; $tfile=eReturnTrueEcmsPath()."e/data/template/schalltemp.txt"; $file=eReturnTrueEcmsPath()."e/sch/index.php"; $temp=ReadFiletext($tfile); //取得页面模板 $pr=$empire->fetch1("select schalltemp,schallsubnum,schalldate from ".GetTemptb("enewspubtemp")." limit 1"); $url="<?=$url?>"; $pagetitle=$fun_r['SearchAllNav']; $pr['schalltemp']=ReplaceSvars($pr['schalltemp'],$url,0,$pagetitle,$pagetitle,$pagetitle,$add,1); $temp=str_replace("<!--empire.listtemp.subnum-->",$pr['schallsubnum'],$temp); $temp=str_replace("<!--empire.listtemp.formatdate-->",$pr['schalldate'],$temp); $pr['schalltemp']=str_replace("[!--keyboard--]","<?=$keyboard?>",$pr['schalltemp']); $pr['schalltemp']=str_replace("[!--num--]","<?=$num?>",$pr['schalltemp']); $pr['schalltemp']=str_replace("[!--listpage--]","<?=$listpage?>",$pr['schalltemp']); $listtemp_r=explode("[!--empirenews.listtemp--]",$pr['schalltemp']); $temp=str_replace("<!--empire.listtemp.top-->",$listtemp_r[0],$temp); $temp=str_replace("<!--empire.listtemp.footer-->",$listtemp_r[2],$temp); //---列表中间 $listtemp_center=str_replace("[!--no.num--]","<?=$no?>",$listtemp_r[1]); $listtemp_center=str_replace("[!--titleurl--]","<?=$titleurl?>",$listtemp_center); $listtemp_center=str_replace("[!--id--]","<?=$r[id]?>",$listtemp_center); $listtemp_center=str_replace("[!--classid--]","<?=$r[classid]?>",$listtemp_center); $listtemp_center=str_replace("[!--titlepic--]","<?=$titlepic?>",$listtemp_center); $listtemp_center=str_replace("[!--newstime--]","<?=$newstime?>",$listtemp_center); $listtemp_center=str_replace("[!--title--]","<?=$title?>",$listtemp_center); $listtemp_center=str_replace("[!--smalltext--]","<?=$smalltext?>",$listtemp_center); $temp=str_replace("<!--empire.listtemp.center-->",$listtemp_center,$temp); WriteFiletext($file,$temp); }"; $file=eReturnTrueEcmsPath()."e/sch/index.php"; $temp=ReadFiletext($tfile); //取得页面模板 $pr=$empire->fetch1("select schalltemp,schallsubnum,schalldate from ".GetTemptb("enewspubtemp")." limit 1"); $url="<?=$url?>"; $pagetitle=$fun_r['SearchAllNav']; $pr['schalltemp']=ReplaceSvars($pr['schalltemp'],$url,0,$pagetitle,$pagetitle,$pagetitle,$add,1); $temp=str_replace("<!--empire.listtemp.subnum-->",$pr['schallsubnum'],$temp); $temp=str_replace("<!--empire.listtemp.formatdate-->",$pr['schalldate'],$temp); $pr['schalltemp']=str_replace("[!--keyboard--]","<?=$keyboard?>",$pr['schalltemp']); $pr['schalltemp']=str_replace("[!--num--]","<?=$num?>",$pr['schalltemp']); $pr['schalltemp']=str_replace("[!--listpage--]","<?=$listpage?>",$pr['schalltemp']); $listtemp_r=explode("[!--empirenews.listtemp--]",$pr['schalltemp']); $temp=str_replace("<!--empire.listtemp.top-->",$listtemp_r[0],$temp); $temp=str_replace("<!--empire.listtemp.footer-->",$listtemp_r[2],$temp); //---列表中间 $listtemp_center=str_replace("[!--no.num--]","<?=$no?>",$listtemp_r[1]); $listtemp_center=str_replace("[!--titleurl--]","<?=$titleurl?>",$listtemp_center); $listtemp_center=str_replace("[!--id--]","<?=$r[id]?>",$listtemp_center); $listtemp_center=str_replace("[!--classid--]","<?=$r[classid]?>",$listtemp_center); $listtemp_center=str_replace("[!--titlepic--]","<?=$titlepic?>",$listtemp_center); $listtemp_center=str_replace("[!--newstime--]","<?=$newstime?>",$listtemp_center); $listtemp_center=str_replace("[!--title--]","<?=$title?>",$listtemp_center); $listtemp_center=str_replace("[!--smalltext--]","<?=$smalltext?>",$listtemp_center); $temp=str_replace("<!--empire.listtemp.center-->",$listtemp_center,$temp); WriteFiletext($file,$temp); }
可见,是利用
e/data/template/schalltemp.txt
和 后台的全站搜索模板,一起合成最终的搜索页面。
在这个函数中,
[!--listpage--]
为 变量$listpage 替换。
进一步,观察
schalltemp.txt
的代码,可见:
$listpage=page1($num,$line,$page_line,$start,$page,$search);
那么,分页就是用page1函数实现的了。打开二开助手,page1回车后,看到:
//函数page1位于文件/e/class/connect.php#//前台分页中。 //前台分页 function page1($num,$line,$page_line,$start,$page,$search) global $fun_r; 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; }
以上就是帝国cms全站全文搜索的分页代码龙脉,了解后,改动起来就有的放矢了。