jekylljekyll-paginator

Cannot get paganation using jekyll-paginate-v2 to work


I have been looking at multiple answers to similar questions here on stack overflow and other sources, but simply cannot solve my problem.

I have a page consisting of index.md which has the following frontmatter:

# Feel free to add content and custom Front Matter to this file.
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults

title: title
layout: default
pagination: 
  enabled: true
---

And this is what I do to list my post:

    <!-- 
        Here is the main paginator logic called.
        All calls to site.posts should be replaced by paginator.posts 
    -->
    {% for post in paginator.posts %}
      <li>
        <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>

        <h2>
          <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
        </h2>
      </li>
    {% endfor %}
  </ul>

  <!-- 
    Showing buttons to move to the next and to the previous list of posts (pager buttons).
  -->
  {% if paginator.total_pages > 1 %}
  <ul class="pager">
      {% if paginator.previous_page %}
      <li class="previous">
          <a href="{{ paginator.previous_page_path | prepend: site.baseurl | replace: '//', '/' }}">&larr; Newer Posts</a>
      </li>
      {% endif %}
      {% if paginator.next_page %}
      <li class="next">
          <a href="{{ paginator.next_page_path | prepend: site.baseurl | replace: '//', '/' }}">Older Posts &rarr;</a>
      </li>
      {% endif %}
  </ul>
  {% endif %}


<div class="pagination">
  {% if paginator.previous_page %}
    <a href="{{ paginator.previous_page_path }}" class="previous">
      Previous
    </a>
  {% else %}
    <span class="previous">Previous</span>
  {% endif %}
  <span class="page_number ">
    Page: {{ paginator.page }} of {{ paginator.total_pages }}
  </span>
  {% if paginator.next_page %}
    <a href="{{ paginator.next_page_path }}" class="next">Next</a>
  {% else %}
    <span class="next ">Next</span>
  {% endif %}
</div>

I have added the gem to plugin list and to the gem file and run bundle install, and my configuration looks like this:

pagination:
  enabled: true
  per_page: 3
  offset: 2
  permalink: '/page/:num/'
  title: ':title - page :num of :max'
  limit: 0
  sort_field: 'date'
  sort_reverse: true

However when I run bundle exec jekyll s my test post is not listed. But if I use:

{% for post in site.posts%}
{{post.title}}
{% endfor %}

My test post is listed as I intent. Anyone who can help me towards, what I am doing wrong, I simply cannot spot it.


Solution

  • Do you have a specific reason for including offset: 2 in the _config.yml? This will exclude the first 2 posts from appearing in the pagination so if you don't have at least 3 posts in your project nothing will be displayed.

    Try removing the offset line from your config file, rerun bundle exec jekyll serve, and see if the functionality works.

    For offset usage check the jekyll-paginate-v2 README section "Offsetting posts".