chaihongjun.me

优化dedecms上一篇下一篇内容调用

优化dedecms上一篇下一篇内容调用

  dedecms默认的上一篇下一篇调用出来的都是同一个栏目内的数据,理论上和正常情况下理解的上一篇下一篇有差异。文章的排序是按照ID来生成,如果当前的文章ID是2,那么前一篇的ID应该是1,后一篇是3。这样对于优化,对于蜘蛛的抓取都是有好处的。如果想完成这一想法,其实非常简单,具体步骤如下:

进入dedecms系统后台目录,再进入include目录,修改文件arc.archives.class.php

代码片段:

function GetPreNext($gtype='')
    {
        $rs = '';
        if(count($this->PreNext)<2)
        {
            $aid = $this->ArcID;
          //  $preR =  $this->dsql->GetOne("Select id From `chj_arctiny` where id<$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' order by id desc");
          //  去掉typeid的限制
            $preR =  $this->dsql->GetOne("Select id From `chj_arctiny` where id<$aid And arcrank>-1 order by id desc");
          //  $nextR = $this->dsql->GetOne("Select id From `chj_arctiny` where id>$aid And arcrank>-1 And typeid='{$this->Fields['typeid']}' order by id asc");
          // 去掉typeid的限制
            $nextR = $this->dsql->GetOne("Select id From `chj_arctiny` where id>$aid And arcrank>-1 order by id asc");

            $next = (is_array($nextR) ? " where arc.id={$nextR['id']} " : ' where 1>2 ');
            $pre = (is_array($preR) ? " where arc.id={$preR['id']} " : ' where 1>2 ');
            $query = "Select arc.id,arc.title,arc.shorttitle,arc.typeid,arc.ismake,arc.senddate,arc.arcrank,arc.money,arc.filename,arc.litpic,arc.description,
                        t.typedir,t.typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath
                        from `chj_archives` arc left join chj_arctype t on arc.typeid=t.id  ";
            $nextRow = $this->dsql->GetOne($query.$next);
            $preRow = $this->dsql->GetOne($query.$pre);

只是去掉typeid的限制,这样,就完成了对上一篇,下一篇的修改,真正做到的了全站内容的连接。

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。作者:柴宏俊»