用
帝国cms做博客站时,会发现帝国cms默认首页是没有分页导航的。给帝国cms首页添加分页导航有好几种方法,常见的是用自定义列表做首页,但自定义列表是静态页面,虽然可以用
计划任务定时刷新生成列表。但还是不如动态的分页导航。
本次我们用帝国cms默认的
结合项功能,给帝国cms添加动态的首页分页导航。
1、在列表模板中,创建一个首页模板(带分页导航),这个模板就是显示带分页导航的效果。如下图:
2、在首页模板中添加分页导航
<div class="numeric-pagination">
<ul class="page-numbers">
<li><span class="active">1</span></li>
<li><a href="/e/action/ListInfo.php?page=1&mid=1&line=20&tempid=14&orderby=newstime&myorder=0">2</a></li>
<li><a href="/e/action/ListInfo.php?page=2&mid=1&line=20&tempid=14&orderby=newstime&myorder=0">3</a></li>
<li><a href="/e/action/ListInfo.php?page=1&mid=1&line=20&tempid=14&orderby=newstime&myorder=0">下页</a></li>
</ul>
</div>
其中line=20是结合项显示20条。tempid=14是调用列表模板id为14的模板。
这样首页就有分页导航了。点击分页,打开的就是结合项生成的列表页。
首页的分页导航是写静态的代码,不能自动增加或减少。我们可以再优化一下。
3、优化首页分页导航
<!--分页导航-->
<?php
$tzcount=$empire->gettotal("select count(*) as total from phome_ecms_news"); //文章总数
if($tzcount>20){
$count2=$tzcount/20;
?>
<div class="numeric-pagination">
<ul class="page-numbers">
<li><span class="active">1</span></li>
<?php
for($i=1; $i<=$count2; $i++){
?>
<li><a href="/e/action/ListInfo.php?page=<?=$i;?>&mid=1&line=20&tempid=14&orderby=newstime&myorder=0"><?=$i+1;?></a></li>
<?php
}
?>
<li><a href="/e/action/ListInfo.php?page=1&mid=1&line=20&tempid=14&orderby=newstime&myorder=0">下页</a></li>
</ul>
</div>
<?php }?>
这样首页的分页导航,就可以根据文章数,自动增减分页导航了。
但这种方法链接是动态的,不美观,可以改成
伪静态。
4、首页分页导航改成伪静态,代码如下:
<!--分页导航-->
<?php
$tzcount=$empire->gettotal("select count(*) as total from phome_ecms_news"); //文章总数
if($tzcount>20){
$count2=$tzcount/20;
?>
<div class="numeric-pagination">
<ul class="page-numbers">
<li class="active"><span>1</span></li>
<?php
for($i=1; $i<=$count2; $i++){
?>
<li><a href="/index_<?=$i;?>.html"><?=$i+1;?></a></li>
<?php
}
?>
<li><a href="/index_1.html">下页</a></li>
</ul>
</div>
<?php }?>
5、nginx伪静态规则
rewrite ^/index_(.+?).html$ /e/action/ListInfo.php?page=$1&mid=1&line=20&tempid=12&orderby=newstime&myorder=0 last;
rewrite ^/index.html$ /e/action/ListInfo.php?page=0&mid=1&line=20&tempid=12&orderby=newstime&myorder=0 last;
6、需要在e/action/ListInfo.php加几行代码,判断伪静态使用分页函数的
找到
$listpage=page1($num,$line,$page_line,$start,$page,$search);
在下面添加:
//如果启用结合项并且伪静态的分页
if($_GET['myorder']==0){
$listpage=page_sx($num,$line,$page_line,$start,$page,$_SERVER[REQUEST_URI]);
}
7、在/e/class/userfun.php中添加如下代码
//结合项分页
function page_sx($num,$line,$page_line,$start,$page,$search){
global $fun_r;
if($num<=$line){
return '';
}
$search=RepPostStr($search,1);
$lj_arr=explode('-',$search);
$lj_arr[count($lj_arr)-1]='';//去掉页数.html
foreach ($lj_arr as $val){
$lianjie.=$val.'-';
}
$lianjie=substr($lianjie,0,-1);
$url=eReturnSelfPage(0).'?page';
$snum=2;//最小页数
$totalpage=ceil($num/$line);//取得总页数
// $firststr='<li><a title="'.$fun_r['trecord'].'">'.$num.'</a></li>';
$firststr='';
//上一页
if($page<>0){
$toppage='<li><a href="index_'.$lianjie.'0.html">'.$fun_r['startpage'].'</a></li>';
$pagepr=$page-1;
$prepage='<li><a href="index_'.$lianjie.$pagepr.'.html">'.$fun_r['pripage'].'</a></li>';
}
//下一页
if($page!=$totalpage-1){
$pagenex=$page+1;
$nextpage='<li><a href="index_'.$lianjie.$pagenex.'.html">'.$fun_r['nextpage'].'</a></li>';
$lastpage='<li><a href="index_'.$lianjie.($totalpage-1).'.html">'.$fun_r['lastpage'].'</a></li>';
}
$starti=$page-$snum<0?0:$page-$snum;
$no=0;
for($i=$starti;$i<$totalpage&&$no<$page_line;$i++){
$no++;
if($page==$i){
$is_1="<li class='active'><span>";
$is_2="</span></li>";
}else{
$is_1='<li><a href="index_'.$lianjie.$i.'.html">';
$is_2="</a></li>";
}
$pagenum=$i+1;
$returnstr.=" ".$is_1.$pagenum.$is_2;
}
$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
return $returnstr;
}