Jekyll - 下一个和以前的链接与不同的类别

时间:2015-02-04 21:33:52

标签: html jekyll

我正在使用Jekyll构建博客,我设法在我的布局页面上成功实现了Next和Previous链接(使用this answer)。我添加了几个类别(使用this answer),每个页面都会遍历正确的类别,只显示我想要的类别。

我现在唯一的问题是,上一页和下一页按钮仍会遍历所有帖子,无论它们属于哪个类别。

这是我用于布局底部的Next和Previous链接的代码:

        {% if page.previous %} 
          <span class="previous-link">
            <a rel="prev" href="{{ page.previous.url }}">Previous Entry</a>
          </span>
        {% endif %}
        {% if page.next %} 
          <span class="next-link">
            <a rel="next" href="{{ page.next.url }}">Next Entry</a>
          </span>
        {% endif %}

有没有办法让“下一个”和“上一个”按钮转到当前帖子类别中的下一个或上一个帖子?

2 个答案:

答案 0 :(得分:4)

经过一番研究。我在这篇博文中找到了我正在寻找的内容 - http://ajclarkson.co.uk/blog/jekyll-category-post-navigation/

只需要在_plugin目录中添加一个插件并在其中添加这段代码:

module Jekyll
  class WithinCategoryPostNavigation < Generator
    def generate(site)
      site.categories.each_pair do |category, posts|
        posts.sort! { |a,b| b <=> a}
        posts.each do |post|
          index = posts.index post
          next_in_category = nil
          previous_in_category = nil
          if index
            if index < posts.length - 1
              next_in_category = posts[index + 1]
            end
            if index > 0
              previous_in_category = posts[index - 1]
            end
          end
          post.data["next_in_category"] = next_in_category unless next_in_category.nil?
          post.data["previous_in_category"] = previous_in_category unless previous_in_category.nil?
        end
      end
    end
  end
end

而不是在HTML中使用page.next.url和page.prev.url,只需使用page.next_in_category.url和page.previous_in_category.url。

我希望这有助于任何遇到同样问题的人。

答案 1 :(得分:4)

如果您能够安装插件,则类别中的分页ajclarkson插件是正确且有用的解决方案。

如果要部署到Github页面,则无法使用插件。

我使用此方法在类别中进行分页。这可以确保来自其他类别的帖子永远不会显示:

<http:conduit  name="#{conduitResolver.getUrlPattern()}">
            ...........
</http:conduit> 

请注意,如果必须跳过其他类别的内容,此解决方案将无法找到下一篇文章。它避免了最糟糕的(?)场景,它链接到无意识/非真正的帖子。