Jekyll分页:偏移量偏移所有页面,而不仅仅是第一页

时间:2018-07-10 18:20:09

标签: jekyll liquid jekyll-extensions jekyll-paginator

在使用Jekyll(使用Liquid模板语言),插件jekyll-paginate-v2offset时遇到问题。

问题:我的博客上有一个精选部分,始终显示最新的帖子。其他帖子显示在下面,每页10条,使用分页显示。

我试图简单地使用{% for post in paginator.posts offset:1 %}向他们展示,但这有两个方面的缺陷:

  • 每页仅显示9个帖子,而不是10个
  • 它抵消了每页上的第一条帖子,因此隐藏了第一,第十,二十等帖子,这不是我想要的

我要实现的目标:一个循环,该循环始终忽略索引0处的帖子,并像往常一样显示其他所有内容。

我只是错误地使用offset,还是jekyll-paginate-v2中的错误?

现在,我通过执行以下操作“修复”了它,但这并不理想,因为第一页仅显示9个帖子:

<div class="articles-showcase row post-list">
{% assign featuredpost = site.posts.first %}
  {% for post in paginator.posts %}
  {% if post == featuredpost %}
  {% continue %}
  {% else %}
  <!-- Article Card -->
  <div class="article-detail-box col-lg-6 col-md-6 col-sm-12 card-article-div" data-cat="{{post.category | join: ','}}">
    <div class="card card-article box-shadow h-100">
      <a href="{{ site.baseurl }}{{post.url}}" class="card-article-linker" title="{{post.title}}"></a>
      <div class="img-div text-center post-card-header bg-gray">
        <img src="{{ site.baseurl }}{{post.image}}" alt="{{post.title}}">
      </div>
      <div class="card-article-body">
        <p class="author-name">{{post.author}} | {{ post.date | date: '%B %d, %Y' }}</p>
        <a href="{{site.baseurl}}{{post.url}}">
          <h5>{{post.title}}</h5>
        </a>
        <div class="article-description">{{post.content}}</div>
      </div>
    </div>
  </div>
  {% endif %}
  {% endfor %}
</div>

3 个答案:

答案 0 :(得分:0)

我找到了我正在使用的有缺陷的解决方案,直到出现更好的情况为止。我现在在这里分享:

   <div class="articles-showcase row post-list">
  {% if paginator.page == 1 %}
    {% for post in site.posts limit:11 %}
    {% if post == featuredpost %}
      {% continue %}
    {% else %}
    <!-- Article Card -->
    <div class="article-detail-box col-lg-6 col-md-6 col-sm-12 card-article-div" data-cat="{{post.category | join: ','}}">
      <div class="card card-article box-shadow h-100">
        <a href="{{ site.baseurl }}{{post.url}}" class="card-article-linker" title="{{post.title}}"></a>
        <div class="img-div text-center post-card-header bg-gray">
          <img src="{{ site.baseurl }}{{post.image}}" alt="{{post.title}}">
        </div>
        <div class="card-article-body">
          <p class="author-name">{{post.author}} | {{ post.date | date: '%B %d, %Y' }}</p>
          <a href="{{site.baseurl}}{{post.url}}">
            <h5>{{post.title}}</h5>
          </a>
          <div class="article-description">{{post.content}}</div>
        </div>
      </div>
    </div>
    {% endif %}
  {% endfor %}
  {% endif %}
  {% if paginator.page > 1 %}
  {% for post in paginator.posts %}
    <!-- Article Card -->
    <div class="article-detail-box col-lg-6 col-md-6 col-sm-12 card-article-div" data-cat="{{post.category | join: ','}}">
        <div class="card card-article box-shadow h-100">
          <a href="{{ site.baseurl }}{{post.url}}" class="card-article-linker" title="{{post.title}}"></a>
          <div class="img-div text-center post-card-header bg-gray">
            <img src="{{ site.baseurl }}{{post.image}}" alt="{{post.title}}">
          </div>
          <div class="card-article-body">
            <p class="author-name">{{post.author}} | {{ post.date | date: '%B %d, %Y' }}</p>
            <a href="{{site.baseurl}}{{post.url}}">
              <h5>{{post.title}}</h5>
            </a>
            <div class="article-description">{{post.content}}</div>
          </div>
        </div>
      </div>
  {% endfor %}
  {% endif %}
</div>

主要问题是第二个分页显示第一页上的最后一篇文章。对我来说,这比只在首页显示9条帖子要好。任何更好的解决方案将不胜感激!

答案 1 :(得分:0)

作为快速解决方案,您应该能够将最新属性手动添加到最新帖子:

---
layout: page
pagination: 
  enabled: false
---

否则,您要么必须排除paginator-v2插件并编写自己的分页逻辑,要么在_plugins目录中扩展该插件,以使发送到paginate插件的发布数据已经排除了第一个(实际上最后一次是因为反向排序将在之后进行。)发布。

答案 2 :(得分:0)

我将此问题提交给jekyll-paginate-v2开发人员,现在已解决:https://github.com/sverrirs/jekyll-paginate-v2/issues/100