帝国cms新闻模型 点击图片进入下一页完美修复
帝国cms自6.5版本后,自带点击图片进入下一页功能,只要在发布文章的时候选中“点击图片进入下一页”即可实现。
但是此功能并不完善,包括:
1、当处在文章最后一个分页的时候,点击进入的是文章列表,而不是下一篇文章。
2、部分用户希望在图片的左右两侧有上一页下一页的按钮,点击按钮也可以切换。
修改方法如下(请做好备份):
第一步:点击图片进入下一页,如果处在最后一页,则进入上一篇文章,如果没有上一篇文章,则进入文章列表页。
PS:这里说的是上一篇而非下一篇,因为当我们添加文章的时候,上一篇是存在的,而下一篇并不存在,所以我们选择最后一页进入上一篇文章,这样比较合理
1、修改新闻模型的newstext字段,默认选中 点击图片进入下一页
2、修改functions.php中的UpdateImgNexturl函数
将
PHP
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];
}
修改为:
PHP
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];
}
将
PHP
$newstext=RepNewstextImgLink($r[$pf],$r);
修改为:
PHP
$newstext=RepNewstextImgLink($r[$pf],$r,$next_r[id]);
3、修改RepNewstextImgLink函数
将
PHP
function RepNewstextImgLink($newstext,$add)
修改为:
PHP
function RepNewstextImgLink($newstext,$add,$next_r)
将
PHP
$lastpageurl=$public_r['newsurl'].'e/public/ClassUrl/?classid='.$add['classid']; //最后一页链接地址
修改为:
PHP
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函数
最后一行增加:
PHP
$newstemptext=UpdateImgNexturl($classid,$id,$checked=1);
以上部分修改完后,内容图片自动增加下一页链接,当最后一页时,跳转到上一篇,当没有上一篇时,跳转到列表页。
第二步:增加左右按钮连接,点击分别进入上一页下一页,如果处在最后一页,点击进入上一篇,如果没有上一篇,进入文章列表。
1、function.php中 function GetHtml 函数 增加
PHP
$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中,增加
PHP
$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调用
Markup
<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文件
JavaScript
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、内容页模板中,上一页按钮及下一页按钮
Markup
<a href="javascript:PicPlayPre();" class="prev direction_left"></a>
<a href="javascript:PicPlayNext();" class="next direction_right"></a>
补充:左右按钮正好在图片垂直中间位置的办法
Markup
<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文件
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;}
<< 上一篇
下一篇 >>