不言不语

您现在的位置是: 首页 >  PHP

PHP

ThinkPHP5.1获取上一篇和下一篇方法

2022-06-05PHP
下面我们来讲解一下如何在ThinkPHP5.1获取上一篇和下一篇,并且方便前台模版调用,我们通过model创建上一篇和下一篇的静态方法,并且通过控制器来直接调用,再通过assgin方法赋值到模版中去,直接通过变量即可获取。

在模型创建静态方法

//获取同分类下的上一篇文章
public static function getPrev($info=[]){
    $map[] = ['id','gt',$info['id']];
    $map[] = ['category_id','eq',$info['category_id']];

    $info = self::where($map)->order('id ASC')->find();
    if($info){
        $href = url_news_show($info['id']);;
        $a = '<a href="'.$href.'">'.$info['title'].'</a>';
    }else{
        $a = '没有了';
    }
    return $a;
}

//获取同分类下的下一篇文章
public static function getNext($info=[]){
    $map[] = ['id','lt',$info['id']];
    $map[] = ['category_id','eq',$info['category_id']];

    $info = self::where($map)->order('id DESC')->find();
    if($info){
        $href = url_news_show($info['id']);;
        $a = '<a href="'.$href.'">'.$info['title'].'</a>';
    }else{
        $a = '没有了';
    }
    return $a;
}


在详细页调用并赋值

$prev = NewsModel::getPrev($info);
$next = NewsModel::getNext($info);
$this->assign('prev',$prev);
$this->assign('next',$next);

注:上面是静态方法调用,需要先使用命名空间加载类use app\admin\model\NewsModel;


html视图模版代码

<div class="nextinfo">
    <p>上一篇:{$prev|raw}</p>
    <p>下一篇:{$next|raw}</p>
</div>


效果:


文章评论