ruby - 如何在 Jekyll 的主页上按日期对帖子进行分组?

标签 ruby jekyll liquid

在 Jekyll 中,我希望我的主页列出按日期分组的最新帖子,如下所示:

2013 年 9 月 6 日

  • 发布 1
  • 后 2
  • 后 3

2013 年 9 月 5 日

  • 发布 1
  • 后 2

基本上,当循环中的帖子与之前处理的日期不同时,我只想吐出一个日期标题。我试图通过测试 for 循环中的下一篇文章是否与上一篇文章的日期匹配来实现这一点,并且只有在不匹配时才显示日期标题。这是我的 Liquid 模板的样子:

---
layout: default
title: Home Page
---

{% assign thedate = '' %}

{% for post in site.posts %}

    {% if thedate != post.date | date: "%m-%d-%Y" %}
        <h2>{{ post.date | date: "%A, %B %e, %Y" }}</h2>
    {% endif %}

    {% assign thedate = post.date | date: "%m-%d-%Y" %}

    <h3 class="headline"><a href="{{ post.url }}">{{ post.title }}</a></h3>
    {{ post.content }}
    <hr>

{% endfor %}

如果不使用 post.date | date: "%m-%d-%Y" 我只是简单地说 post.date 它有效,并且帖子被分组在一起,但前提是帖子具有完全相同的日期并且时间(不只是一个月的同一天)。这就是为什么我添加更具体的 post.date |日期:“%m-%d-%Y”

有什么想法吗?非常感谢我们的帮助!!

最佳答案

通过修改这里的存档解决方案找到了答案:http://www.mitsake.net/2012/04/archives-in-jekyll/

这是有效的代码:

layout: default
title: Home Page
---

{% for post in site.posts %}

    {% capture day %}{{ post.date | date: '%m%d%Y' }}{% endcapture %}
    {% capture nday %}{{ post.next.date | date: '%m%d%Y' }}{% endcapture %}

    {% if day != nday %}
        <h5 class="date">{{ post.date | date: "%A, %B %e, %Y" }}</h5>
    {% endif %}
    {{ post.content }}
    <hr>

{% endfor %}

关于ruby - 如何在 Jekyll 的主页上按日期对帖子进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669143/

相关文章:

jekyll - 似乎无法解决如何将 3 个参数传递给过滤器

Ruby - 哈希 - 组合

ruby-on-rails - 更新本地 gem 源代码

ruby-on-rails - Ruby:将数据发布到 url

ruby - Jekyll 不在本地提供站点服务

jekyll - "jekyll build --lsi"使博客非常非常慢

ruby - 如何在 Ruby 1.9.x 中要求位于同一目录中的类

jekyll - 如何运行 'jekyll serve' 指向另一个目录?

ruby - Jekyll 错误 "Liquid Exception: undefined method ` 编码为 nil :NilClass in _layouts/post. html"

javascript - 如何使用 jQuery 或 javascript 编辑父标签的 html?