您好,欢迎来到 猿书

yii2 实现文章底部"上/下一篇"的功能

易大师 2016-07-02 1185次浏览 0条评论 1 打赏作者 0 0
简介 在许多博客和社区文章底部都有上一篇或者下一篇的链接,有童鞋问这个yii2要如何实现呢?其实很简单,稍微点一下大家就明白了。 实例 其实很简单,我们有的条件就是当前文章的ID($id),那么我们去查询当前id的下一条有效的数据就是下一篇的内容了,看下代码 1.yii2中默认的详情页是如下所示:...

简介

在许多博客和社区文章底部都有上一篇或者下一篇的链接,有童鞋问这个yii2要如何实现呢?其实很简单,稍微点一下大家就明白了。

实例

其实很简单,我们有的条件就是当前文章的ID($id),那么我们去查询当前id的下一条有效的数据就是下一篇的内容了,看下代码

1.yii2中默认的详情页是如下所示:

public function actionView($id)
{
    return $this->render('view', [
        'model' => $this->findModel($id),
    ]);
}

2.在这里添加一段查询下一条数据的代码既可(post为文章模型)

public function actionView($id)
{
    //下一篇内容获取
    $res = Post::find()->where(['>', 'id', $id])->one();
    if($res){
        $next['url'] = yii\helpers\Url::to(['post/view','id'=>$res->id]);
        $next['title'] = $res->title;
    }else{
        $next['url'] = '#';
        $next['title'] = '没有文章了';
    }
    //上一篇内容获取
    $res = Post::find()->where(['<', 'id', $id])->orderBy('id desc')->one();
    if($res){
        $prev['url'] = yii\helpers\Url::to(['post/view','id'=>$res->id]);
        $prev['title'] = $res->title;
    }else{
        $prev['url'] = '#';
        $prev['title'] = '已经到头了';
    }
    return $this->render('view', [
        'model' => $this->findModel($id),
        'next' => $next,
        'prev' => $prev
    ]);
}

3.剩下的就是在对应的位置,添加上下一篇的内容即可

<div>
上一篇:<a href="<?=$prev['url']?>"><?=$prev['title']?></a>
下一篇:<a href="<?=$next['url']?>"><?=$next['title']?></a>
</div>
0

0 条评论