【问题标题】:Jekyll paginate: offset offsetting all pages, not just firstJekyll paginate:偏移所有页面,而不仅仅是第一页
【发布时间】:2018-12-18 16:31:55
【问题描述】:

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

问题:我的博客上有一个精选版块,它总是显示最新的帖子。其他帖子如下所示,每页 10 个使用分页。

我尝试使用{% for post in paginator.posts offset:1 %} 简单地展示它们,但这在两个方面存在缺陷:

  • 每页只显示 9 个帖子,而不是 10 个
  • 它会偏移每页的第一个帖子,从而隐藏第 1 个、第 10 个、第 20 个等帖子,这不是我想要的

我想要实现的目标:一个始终忽略索引 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>

【问题讨论】:

    标签: jekyll liquid jekyll-extensions jekyll-paginator


    【解决方案1】:

    我向 jekyll-paginate-v2 开发人员提出了这个问题,现在已经解决了:https://github.com/sverrirs/jekyll-paginate-v2/issues/100

    【讨论】:

      【解决方案2】:

      作为一种快速修复,您应该能够手动将前端属性添加到最新帖子:

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

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

      【讨论】:

      • 我确实想到了这一点,但是手动将最新帖子设置为特色正是我想要避免的。我希望它自动显示最新的帖子,这样帖子作者就少了一件需要担心的事情(并且可能会搞砸)。
      • 我会考虑修改插件或制作自己的插件。问题是我是 python/JS 开发人员,而不是 ruby​​ :)
      【解决方案3】:

      我拼凑了一个我正在使用的有缺陷的解决方案,直到出现更好的解决方案。我先在这里分享一下:

         <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 个帖子要好。任何更好的解决方案将不胜感激!

      【讨论】:

        猜你喜欢
        • 2016-03-26
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        • 2022-11-25
        • 2012-10-08
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多