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 %}