文章列表显示上一篇下一篇

分享
已结 精华 置顶
1 111
yuhq
yuhq 2018-11-18

因业务需要,公司网站文章列表需要显示上一篇下一篇功能,方便浏览切换的同时也对SEO有一些帮助。

由于之前没弄过这个功能,在网上找了一些资料,效果终于做出来了,只是不知道我的写法有没有错和有没有改进的地方,如果有更好的方法期待大家告诉我。

参考网址:https://blog.csdn.net/qq_27987023/article/details/80798011


以cltphpdemo网址的CLTPHP动态这个栏目为例,在Common.php文件中加入以下代码:

//文章列表显示上一篇下一篇 $art_id = input('id'); /*查找出全部id,组合一个数组,根据索引去判断上一个或下一个是否存在*/ $all_id = Db::name("article")->field('id')->where('catid',input('catId'))->order(['sort','id'=>'desc'])->select(); foreach ($all_id as $key => $value) { if($value['id'] == $art_id){ //定位当前 //获取下一篇 if(isset($all_id[$key+1])){
                    $next_id = $all_id[$key+1]['id'];
                }else{
                    $next_id = '';
                } //获取上一篇 if(isset($all_id[$key-1])){
                    $pre_id = $all_id[$key-1]['id'];
                }else{
                    $pre_id = '';
                }
            }
        } if($next_id != ''){
            $next_info = Db::name("article")->field('id,title')->where("id",$next_id)->find();
        }else{
            $next_info = '';
        } if($pre_id != ''){
            $pre_info = Db::name("article")->field('id,title')->where("id",$pre_id)->find();
        }else{
            $pre_info = '';
        }
        $this->assign("next_info",$next_info);
        $this->assign("pre_info",$pre_info);


article_show.html页面:

{php} $catid = input("catId");{/php} <p> {if condition="$pre_info != ''"} <a href="{:url('home/'.MODULE_NAME.'/info',array('id'=>$pre_info.id,'catId'=>$catid))}">上一篇:{$pre_info.title}</a> {else /} 已经是第一篇 {/if} </p> <p> {if condition="$next_info != ''"} <a href="{:url('home/'.MODULE_NAME.'/info',array('id'=>$next_info.id,'catId'=>$catid))}">下一篇:{$next_info.title}</a> {else /} 已经是最后一篇 {/if} </p>


效果如下:

在后台我把“CLTPHP4.5发布”这篇文章排序到最后

最终的排版效果大家自己调整就行了。

回帖
  • chichu VIP5 (管理员)
    2018-10-26 08:56:06



    0 回复
取消评论