Blog-plugin: rain.blog next and previous posts

Created on 24 Apr 2015  路  9Comments  路  Source: rainlab/blog-plugin

is there a simple way to implement next and previous post navigation. So readers can move through the articles one by one without having to return to the post list page?

Completed

Most helpful comment

This is now available via both the blog post component and the blog post model

{% set nextPost = blogPost.nextPost %}
{% set lastPost = blogPost.previousPost %}

All 9 comments

I was wondering this aswell. Tried for a solution for a bit until I finally just let it slide & let Disqus recommend posts. Would like to know this too.

I'm really interested in this solution too. Would be great if it was built into the plugin.

Add

$this->next = $this->page['next'] = $this->getNextPost();
$this->prev = $this->page['prev'] = $this->getPrevPost();

to your onRun() and then define the following:

protected function getNextPost() {
    $id = $this->post->id;
    $post = BlogPost::isPublished()->where('id', '>' , $id)->first();

    return $post;
}

protected function getPrevPost() {
    $id = $this->post->id;
    $post = BlogPost::isPublished()->where('id', '<', $id)->first();

    return $post;
}

I used a technique like this in a similar module I worked on.

Looks promising. Where exactly do i add all this code? (all in the onRun() of the page)
. I assume I have to manually include next and previous links in my partial?

All Ok , got it sorted with a few tweaks wasn't sure how to call it onto page but got there in the end. Thanks for the pointers ;)

UPDATE, sort of worked but some strange foo going on where won;t continue through the full list of articles. If I get it sorted i 'll let you know what I did

I added all of those in my component class in my plugin. I'll work on a PR later to add them to this plugin.

Do you have a screenshot where to place the code?

My solution:
`use rainlab\blog\models\Post;

function onStart(){
$slug = $this->param('slug');
$this['post_active'] = Post::isPublished()->where('slug', '=' , $slug)->get();
$post_active = Post::isPublished()->where('slug', '=' , $slug)->get();
$this['NextPost'] = Post::isPublished()->where('id', '>' , $post_active[0]['id'])->get();
$this['LastPost'] = Post::isPublished()->where('id', '<',$post_active[0]['id'])->get();
}`

Thanks jhenahan

This is now available via both the blog post component and the blog post model

{% set nextPost = blogPost.nextPost %}
{% set lastPost = blogPost.previousPost %}
Was this page helpful?
0 / 5 - 0 ratings

Related issues

rowild picture rowild  路  4Comments

rickmills picture rickmills  路  5Comments

rodrigogoncalves picture rodrigogoncalves  路  9Comments

mateoprifti picture mateoprifti  路  3Comments

Calinou picture Calinou  路  4Comments