帝国cms新闻模型 点击图片进入下一页完美修复
帝国cms自6.5版本后,自带点击图片进入下一页功能,只要在发布文章的时候选中“点击图片进入下一页”即可实现。
但是此功能并不完善,包括:
1、当处在文章最后一个分页的时候,点击进入的是文章列表,而不是下一篇文章。
2、部分用户希望在图片的左右两侧有上一页下一页的按钮,点击按钮也可以切换。
修改方法如下(请做好备份):
第一步:点击图片进入下一页,如果处在最后一页,则进入上一篇文章,如果没有上一篇文章,则进入文章列表页。
PS:这里说的是上一篇而非下一篇,因为当我们添加文章的时候,上一篇是存在的,而下一篇并不存在,所以我们选择最后一页进入上一篇文章,这样比较合理
1、修改新闻模型的newstext字段,默认选中 点击图片进入下一页
2、修改functions.php中的UpdateImgNexturl函数
将
if($tbdataf) { $r=$empire->fetch1("select id,classid,titleurl,groupid,newspath,filename,stb from ".$infotbname." where id='$id'"); $infodatatbname=$checked?$dbtbpre.'ecms_'.$tbname.'_data_'.$r[stb]:$dbtbpre.'ecms_'.$tbname.'_check_data'; $finfor=$empire->fetch1("select ".$pf." from ".$infodatatbname." where id='$id'"); $r[$pf]=$finfor[$pf]; }
修改为:
if($tbdataf) { $next_r=$empire->fetch1("select isurl,titleurl,classid,id,title from ".$infotbname." where id<'$id' and classid='$classid' order by id desc limit 1"); $r=$empire->fetch1("select id,classid,titleurl,groupid,newspath,filename,stb from ".$infotbname." where id='$id'"); $infodatatbname=$checked?$dbtbpre.'ecms_'.$tbname.'_data_'.$r[stb]:$dbtbpre.'ecms_'.$tbname.'_check_data'; $finfor=$empire->fetch1("select ".$pf." from ".$infodatatbname." where id='$id'"); $r[$pf]=$finfor[$pf]; }
将
$newstext=RepNewstextImgLink($r[$pf],$r);
修改为:
$newstext=RepNewstextImgLink($r[$pf],$r,$next_r[id]);
3、修改RepNewstextImgLink函数
将
function RepNewstextImgLink($newstext,$add)
修改为:
function RepNewstextImgLink($newstext,$add,$next_r)
将
$lastpageurl=$public_r['newsurl'].'e/public/ClassUrl/?classid='.$add['classid']; //最后一页链接地址
修改为:
if(empty($next_r)){ $lastpageurl=$public_r['newsurl'].'e/public/ClassUrl/?classid='.$add['classid']; //最后一页链接地址 }else{ $lastpageurl=$public_r['newsurl'].'e/action/ShowInfo.php?classid='.$add['classid'].'&id='.$next_r; //最后一页链接地址 }
4、修改function GetHtml函数
最后一行增加:
$newstemptext=UpdateImgNexturl($classid,$id,$checked=1);
以上部分修改完后,内容图片自动增加下一页链接,当最后一页时,跳转到上一篇,当没有上一篇时,跳转到列表页。
第二步:增加左右按钮连接,点击分别进入上一页下一页,如果处在最后一页,点击进入上一篇,如果没有上一篇,进入文章列表。
1、function.php中 function GetHtml 函数 增加
$string=str_replace('[!--this.nowpage--]',$j,$string); $string=str_replace('[!--this.totalpage--]',$thispagenum,$string); $string=str_replace('[!--this.dolink--]',$dolink,$string); $string=str_replace('[!--this.filename--]',$add[filename],$string); $string=str_replace('[!--this.filetype--]',$filetype,$string);
2、function GetHtmlRepVar中,增加
$nexturl='<?php $next_r=$empire->fetch1("select isurl,titleurl,classid,id,title from {$dbtbpre}ecms_".$class_r[$ecms_gr[classid]][tbname]." where id<$ecms_gr[id] and classid=\'$ecms_gr[classid]\' order by id desc limit 1"); if(empty($next_r[id])) {$nexturl=$grclassurl;} else { $nexturl=sys_ReturnBqTitleLink($next_r); } echo $nexturl; ?>'; $newstempstr=str_replace('[!--next.url--]',$nexturl,$newstempstr);
这一句为输出当前文章的上一篇文章,如果不存在上一篇,则输出列表页地址
3、内容页模板中,添加js调用
<script language="javascript" type="text/javascript"> var classurl ='[!--next.url--]'; //输出上一篇链接地址 var nowpage=[!--this.nowpage--]; //输出当前分页数 var totalpage=[!--this.totalpage--]; //输出总的分页数 var dolink='[!--this.dolink--]'; //输出文章目录 var filename=[!--this.filename--]; //输出文件名 var filetype='[!--this.filetype--]'; //输出文件名 </script>
4、增加img_box.js文件
function PicPlayPre(){ prevpage = nowpage - 1; if(prevpage < 2){ location.href = dolink + filename + filetype; }else{ location.href = dolink + filename + '_' + prevpage + filetype; } } function PicPlayNext(){ var nextpage = nowpage + 1; if(nowpage == totalpage) { location.href = classurl; }else { location.href = dolink + filename + '_' + nextpage + filetype; } }
5、内容页模板中,上一页按钮及下一页按钮
<a href="javascript:PicPlayPre();" class="prev direction_left"></a> <a href="javascript:PicPlayNext();" class="next direction_right"></a>
补充:左右按钮正好在图片垂直中间位置的办法
<div class="article_pic"> <div class="bd">这里放newstext标签</div> <div class="direction_box news_direction_box"> <a href="javascript:PicPlayPre();" class="prev direction_left"></a> <a href="javascript:PicPlayNext();" class="next direction_right"></a> <div class="clear"></div> </div> </div>
CSS文件
.article_pic { position: relative; } .news_direction_box{ width:979px !important; top:45%;} .direction_box{ position:absolute; z-index:10; top: 48%; width:601px;} .direction_box a{ display:block; width:37px; height:62px;background-image:url(../images/arrow.png); background-repeat: no-repeat;} .direction_left{ float:left; background-position:0 0;} .direction_right{ float:right; background-position:-37px 0;}
<< 上一篇
下一篇 >>