Jekyll 杰基尔:可以';t按日期对集合进行排序
这让我发疯了 我有这个收藏Jekyll 杰基尔:可以';t按日期对集合进行排序,jekyll,Jekyll,这让我发疯了 我有这个收藏资源: # _config.yml collections: resources: output: true permalink: /resources/:name/ 它们都有日期: # /_resources/example.md --- title: Learn the Web date: 09-04-2013 --- 生成页面,如果我尝试显示它的日期,它会正确显示,但我还想按日期对这些页面进行排序,结果就是不起作用。我做错了什么 {%
资源
:
# _config.yml
collections:
resources:
output: true
permalink: /resources/:name/
它们都有日期:
# /_resources/example.md
---
title: Learn the Web
date: 09-04-2013
---
生成页面,如果我尝试显示它的日期,它会正确显示,但我还想按日期对这些页面进行排序,结果就是不起作用。我做错了什么
{% assign sortedResources = site.resources | sort: 'date' %} <!-- Doesn't work -->
{% for resource in sortedResources %}
<div>
{{resource.title}}
<small>{{resource.date | date: "%d %b %Y"}}</small> <!-- Works -->
</div>
{% endfor %}
谢谢我得到了它:按日期字符串排序的资源(例如,
19-06-2015
)不正确
我创建了我的自定义过滤器:
# _plugins/filters.rb
module Jekyll
module DateFilter
require 'date'
def date_sort(collection)
collection.sort_by do |el|
Date.parse(el.data['date'], '%d-%m-%Y')
end
end
end
end
Liquid::Template.register_filter(Jekyll::DateFilter)
这样使用:
{% assign sortedResources = site.resources | date_sort | reverse %}
{% for resource in sortedResources %}
<div>{{resource.title}}</div>
{% endfor %}
{%assign sortedResources=site.resources | date|u sort | reverse%}
{sortedResources%中资源的%s}
{{resource.title}
{%endfor%}
我目前在收藏方面也遇到了同样的问题
在尝试对欧洲格式的日期(如dd/mm/yyyy
或dd-mm-yyyy
)进行排序时,我得到了一个字符串排序。即使在\u config.yml
文件中设置了时区:Europe/Paris
获取按日期排序的集合的唯一方法是使用ISO格式yyyy-mm-dd
# /_resources/example.md
---
title: Learn the Web
date: 2013-04-09
---
这种方法现在正在发挥作用
编辑-杰基尔就是这样管理“日期”的:
date: "2015-12-21" # String
date: 2015-12-1 # String D not zero paded
date: 01-12-2015 # String French format
date: 2015-12-01 # Date
date: 2015-12-21 12:21:22 # Time
date: 2015-12-21 12:21:22 +0100 # Time
如果您不需要时间,可以坚持使用日期:YYYY-MM-DD
格式。
你必须在整个系列中保持一致。如果混合使用字符串、日期和/或时间液体,则会抛出一个错误,如
液体错误:日期与时间的比较失败
或液体错误:字符串与日期的比较失败
如果您的收藏项目前面有一个有效的日期
(),则它们将自动按日期排序,首先是最早的
如果您想先输出较新的项目,您可以颠倒顺序,如下所示:
{% assign sorted = site.resources | reverse %}
{% for item in sorted %}
<h1>{{ item.name }}</h1>
<p>{{ item.content }}</p>
{% endfor %}
{%assign sorted=site.resources | reverse%}
{已排序%%中的项目的百分比}
{{item.name}
{{item.content}
{%endfor%}
我尝试了这个方法来对我的收藏进行排序,但它对我不起作用。事实上,我无法理解它是如何分类收集的。还有什么其他想法我应该检查吗?你提交了这个具体问题的问题吗?我提交了类似的内容:@LorenRogers,请看我的答案。这不是一个bug。@DavidJacquel谢谢你提供的信息——听起来这是一个文档问题。我会注意到这是我的github问题。注意yyyy-mm-dd
不是美国格式。这是国际标准化组织,得到了国际认可。这让我快发疯了。我想我是有点疯了。不管出于什么原因,内置的sort\u by
功能对我不起作用(对于普通的字符串/数字属性),所以我最终做了{%assign items=site.query\u provider | sort:'order%}
。感谢您{%assign items=site.query_provider | sort:'订单'}是否应放入?
{% assign sorted = site.resources | reverse %}
{% for item in sorted %}
<h1>{{ item.name }}</h1>
<p>{{ item.content }}</p>
{% endfor %}