0

我将 Jekyll 与 Prose 结合使用,并设置了一个额外的元数据,称为 pub_date。

在散文中,这被设置为文本字段(尚不支持日期时间字段)

用户为 pub_date 输入类似 2015-01-23 的内容,我可以获取此值并通过 date 方法运行它以正确输出日期(例如{{ post.pub_date | date: "%b %-d, %Y"}}有效)

当我尝试对这些值进行排序时,它们被视为字符串;

{% assign sorted_posts = (paginator.posts | sort: 'pub_date', 'first') %}

有没有更好的方法来排序这个集合?或者我能做些什么来强制价值表现得像一个约会?

我正在使用 github 页面来托管解决方案,所以很遗憾,我们无法使用 Jekyll 进行任何自定义操作。

4

2 回答 2

2

正确的语法按以下方式对您进行paginator.posts排序pub_date

{% assign sorted_posts = paginator.posts | sort: 'pub_date' %}

{% for post in sorted_posts %}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">Pubdate : {{ post.pub_date | date: "%b %-d, %Y"}}</span>
  </p>
{% endfor %}

我不知道first最后是否应该得到数组的第一个帖子,但在这种情况下,它是:

{% assign sorted_posts = paginator.posts | sort: 'pub_date' | first %}

---> as we get one post NO loop !

<h1><a href="{{ post.url }}">{{ sorted_posts.title }}</a></h1>
<p class="author">
<span class="date">Pubdate : {{ sorted_posts.pub_date | date: "%b %-d, %Y"}}</span>
</p>
于 2014-12-18T18:52:47.577 回答
1

使用带引号的字符串作为排序参数时出现错误。Jekyll::Post 与 Jekyll::Post 的比较失败

相反,使用以下方法有效。

{% assign sorted_posts = paginator.posts | sort: :pub_date | reversed %}
{% assign latest_post = sorted_posts | last %}

<!-- do something with latest post -->

{% for post in sorted_posts reversed %}
{% if forloop.first %}<!-- discard the first post -->{% else %}

<!-- iterate over posts -->

{% endif %}
{% endfor %}

不是 100% 确定为什么我们需要调用 reverse 两次,但它确实有效。

于 2015-01-06T16:02:04.883 回答