这篇日志记录下博客项目中的文章详情页,上一页、下一页功能的实现
最开始的想法是根据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>
以上代码就实现了上一页下一页的功能。