【发布时间】:2018-04-18 13:04:21
【问题描述】:
我想按每个集合中的文档数对我的 Jekyll 集合进行排序。
site.collections 变量中的每个集合都有一个 docs 字段,docs 字段(这是一个文档数组)有一个 size 字段,这是该集合中的文档数(参见documentation)。
但是,这样的事情不起作用:
{% assign sorted = site.collections | sort: 'docs.size' %}
{% for coll in sorted %}
...
{% endfor %}
结果是
Liquid Exception: no implicit conversion of String into Integer
看来sort的参数只能是被排序对象类型的直接字段,而不是其字段的字段。
有没有办法按集合包含的文档数量对集合进行排序?
【问题讨论】:
-
您是否尝试过使用
{% assign sorted = site.collections | sort: docs.size %}?即sort: docs.size -
你的意思是没有引号?是的,那么错误是
Liquid Exception: Liquid error (line 14): comparison of Jekyll::Drops::CollectionDrop with Jekyll::Drops::CollectionDrop failed。 -
我不确定是否存在错误或者它不应该像这样工作。排序过滤器上的documentation 不是很有帮助。
-
Jekyll 使用自定义的
sort过滤器。再试一次{% assign sorted = site.collections | sort: 'size' %} -
然后它会编译,但排序顺序不是按文档数,而是与我传递一个不存在的字段进行排序时相同,例如
sort: 'foo'.