帝国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全站全文搜索的分页代码龙脉,了解后,改动起来就有的放矢了。
|