因业务需要,公司网站文章列表需要显示上一篇下一篇功能,方便浏览切换的同时也对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发布”这篇文章排序到最后
最终的排版效果大家自己调整就行了。
下一篇:阿里大鱼类