帝国论坛帝国网站管理系统交流区帝国CMS使用交流[求助]求更正帝国cms 上下一篇 【本版专题贴子】  
 3/3    |‹ ‹‹ 1 2 3
主题:[求助]求更正帝国cms 上下一篇 [加入收藏夹]   

mrlelong
用户头衔:秀才

精华贴   :0
发贴数   :99
经验值   :521
注册时间:2011-06-25
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 21 楼]

个人解决方式用 数组存储当前栏目排序的id 遍历数组 返回当前id的前后信息id

在e/class/function.php 添加如下函数
===================
//通过id判断上下一条
function nextprev($classid,$id)
{//$public_r[newsurl]
        global $empire,$dbtbpre,$emod_r,$public_r,$class_r,$class_zr,$fun_r,$class_tr,$level_r,$etable_r;
        $a=array();$r=array();
        $ii=0;
        if(empty($class_r[$classid][reorder])){$addorder="newstime desc";}else{$addorder=$class_r[$classid][reorder];}
        $sqltext="select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where classid='$classid' and checked=1 order by ".ReturnSetTopSql('list').$addorder." ";
        //echo $sqltext;exit;
        $sql=$empire->query($sqltext); //查询新闻表最新10条记录
        while($rs=$empire->fetch($sql))        //循环获取查询记录
        {
                $a[]=$rs["id"];
                if($rs[id]==$id){$dqid=$ii;}
                $ii++;
        }
        $r[0]=$a[$dqid-1];
        $r[1]=$a[$dqid+1];
        //print_r($a);
        return $r;

}
===================
//$r[0] 为下一篇id ,$r[1]为上一篇id;


===================
//下一篇
        if(strstr($newstemptext,'[!--info.next--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id>$add[id] and classid='$add[classid]' and checked=1 order by id limit 1");
                if(empty($next_r[id]))
                {
                        $infonext="<a href='".$classurl."'>".$fun_r['HaveNoNextLink']."</a>";
                }
                else
                {
                        //链接
                        $nexttitleurl=sys_ReturnBqTitleLink($next_r);
                        $infonext="<a href='".$nexttitleurl."'>".$next_r[title]."</a>";
                }
                $newstempstr=str_replace('[!--info.next--]',$infonext,$newstempstr);
        }
        //上一篇
        if(strstr($newstemptext,'[!--info.pre--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id<$add[id] and classid='$add[classid]' and checked=1 order by id desc limit 1");
===================
为:
===================
$np=nextprev($add[classid],$add[id]);
//下一篇
        if(strstr($newstemptext,'[!--info.next--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id='$np[0]' and classid='$add[classid]' and checked=1 order by id limit 1");
                if(empty($next_r[id]))
                {
                        $infonext="<a href='".$classurl."'>".$fun_r['HaveNoNextLink']."</a>";
                }
                else
                {
                        //链接
                        $nexttitleurl=sys_ReturnBqTitleLink($next_r);
                        $infonext="<a href='".$nexttitleurl."'>".$next_r[title]."</a>";
                }
                $newstempstr=str_replace('[!--info.next--]',$infonext,$newstempstr);
        }
        //上一篇
        if(strstr($newstemptext,'[!--info.pre--]'))
        {
                $next_r=$empire->fetch1("select titleurl,groupid,classid,newspath,filename,id,title from {$dbtbpre}ecms_".$class_r[$add[classid]][tbname]." where id='$np[1]' and classid='$add[classid]' and checked=1 order by id desc limit 1");
===================
以上修改能完成效果,但是 资源耗用太大,求精改

[该贴被修改 1 次,最后修改时间 2012-08-29 14:56:18 ]


BLOG 百度
2012-08-29 14:45:00 已设置保密 顶部 回复 引用 报告 编辑 删除
 3/3    |‹ ‹‹ 1 2 3

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1