这篇日志记录下博客项目中的文章详情页,上一页、下一页功能的实现
最开始的想法是根据id,但是后来发现,数据是可以删除的啊,
这可怎么办。好了,不啰嗦了,上代码、
博客使用的php框架是thinkphp5
Php部分:
/**
* 文章详情
* 查询文章所有信息
*/
public function Detail()
{
$article = db('article');
$cate = db("category");
$artid = input('articleid');
// 文章详情
$articleInfo = $article
->alias('a')
->join("category c",'a.art_cid = c.id')
->field("a.id,a.art_cid,a.arttitle,a.artlogo,a.another,a.artdesc,
a.is_top,a.sort_no,a.status,a.content,a.click_num,a.putime,a.uptime,a.labelstr,c.cat_name")
->where('a.id',$artid)
->find();
// 所属标签
$labelstr = trim($articleInfo['labelstr'],',');
// var_dump($labelstr);die;
$labelList = $this->belongLabel($labelstr);
$this->assign('labelList', $labelList);
// 上一篇文章
$front = $article->where('id','<',$artid)->field(['id','arttitle'])->order(['id'=>'desc'])->find();
// 下一篇文章
$after = $article->where('id','>',$artid)->field(['id','arttitle'])->order(['id'=>'asc'])->find();
if(empty($front)){
$front['arttitle'] = '没有了';
$front['id'] = '';
}else if(empty($after)){
$after['arttitle'] = '没有了';
$after['id'] = '';
}
$this->assign('frontInfo', $front);
$this->assign('afterInfo', $after);
$this->assign('articleInfo', $articleInfo);
return $this->fetch('article_detail');
}
**
**
HTML部分:
<div>
{eq name="frontInfo.id" value=''}
<p>上一篇:<a href="#">{$frontInfo.arttitle}</a></p>
{else/}
<p>上一篇:<a href="{:url('article/Detail',array('articleid'=>$frontInfo['id']))}">{$frontInfo.arttitle}</a></p>
{/eq}
{eq name="afterInfo.id" value=''}
<p>下一篇:<a href="#">{$afterInfo.arttitle}</a></p>
{else/}
<p>下一篇:<a href="{:url('article/Detail',array('articleid'=>$afterInfo['id']))}">{$afterInfo.arttitle}</a></p>
{/eq}
</div>
以上代码就实现了上一页下一页的功能。
有好的建议,请在下方输入你的评论。