thinkphp5.0 文章详情页 上一篇 下一篇

416 阅读1分钟

这篇日志记录下博客项目中的文章详情页,上一页、下一页功能的实现

最开始的想法是根据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>

以上代码就实现了上一页下一页的功能。

 

有好的建议,请在下方输入你的评论。