tp5轻松实现上一篇下一篇
在做一个项目,涉及到了上一篇下一篇这样的小功能,网上肯定有类似的功能块吧,巴拉巴拉没找到,竟是一些麻烦的,没办法自己写,分享给大家。
首先有一些事情要说明关于上一篇下一篇所属栏目的问题,现在有三个栏目,顶级栏目1和两个二级栏目2和二级栏目3,他们都是可以发布文章的,但是顶级栏目点击显示的时候通常也会显示子栏目里面的内容,所以就有了两种情况。第一种情况,你是从二级栏目里面直接访问一篇文章的,那对应该文章的上一篇和下一篇肯定都要从当前栏目里面找,没有就提示找不到。情况2:如果你是从顶级栏目访问的文章,那么上一篇下一篇的时候我认为不能单从这个文章所属的栏目里面找,而是从这三个栏目里面找,当然如果你觉得麻烦也可以只找当前文章所属栏目里面的文章。
下面是我的方法:
写在类里面的方法:
public function index($aid)
{
$arts=db('article')->find($aid);//当前文章所有信息
$cid=$arts['cate_id'];//当前栏目id
$soncids=model('cate')->getChildIds($cid);//这个方法是自己写的,根据当前栏目的id查找所有子栏目的id
$soncids[]=intval($cid);//获取包含当前栏目在内的子栏目的id数组
$prev=db('article')->where('cate_id','in',$soncids)->where('id','<',$aid)->limit(1)->find();//上一篇文章
$next=db('article')->where('cate_id','in',$soncids)->where('id','>',$aid)->limit(1)->find();//下一篇文章
$this->assign([
'arts'=>$arts,
'prev'=>$prev,
'next'=>$next,
]);
return view('newsdetail');
}
模板层的应用:
<div class="prev col-lg-6 col-md-12 col-sm-12 clo-xs-12">
{if condition="$prev"}
<a href="{:url('Article/index',array('aid'=>$prev['id']))}">上一篇:{$prev.title}</a>
{else /}
上一篇:暂时没有了~
{/if}
</div>
<div class="next col-lg-6 col-md-12 col-sm-12 clo-xs-12">
{if condition="$next"}
<a href="{:url('Article/index',array('aid'=>$next['id']))}">下一篇:{$next.title}</a>
{else /}
下一篇:暂时没有了~
{/if}
</div>