Collections 按名称获取杰基尔收藏项目的优雅方式?
在Jekyll2.5.3中,我使用相册(因为我不仅需要存储数据,还需要生成页面) 使用Jekyll时,您可以获得特定项目的数据,其简单方式如下:Collections 按名称获取杰基尔收藏项目的优雅方式?,collections,jekyll,Collections,Jekyll,在Jekyll2.5.3中,我使用相册(因为我不仅需要存储数据,还需要生成页面) 使用Jekyll时,您可以获得特定项目的数据,其简单方式如下:site.data.albums[foo] 但在收藏方面,情况要糟糕得多。我尝试过的所有方法都是无所作为: site.albums[foo] site.collections.albums[foo] site.collections.albums.docs[foo] site.collections.albums.files[foo] 因此,我需要:
site.data.albums[foo]
但在收藏方面,情况要糟糕得多。我尝试过的所有方法都是无所作为:
site.albums[foo]
site.collections.albums[foo]
site.collections.albums.docs[foo]
site.collections.albums.files[foo]
有更好的建议吗?我今天刚做了这件事,你的主张是正确的。我是这样做的:
<!-- this is in a partial with a 'name' parameter -->
{% for item in site.albums %}
{% assign name = item.path | split:"/" | last | split:"." | first %}
{% if name == include.name %}
{% assign collectionItem = item %}
{% endif %}
{% endfor %}
它甚至可以用于填充其他部分中的值,如:
{% include card.html title=workItem.title bg=workItem.card.bg href=workItem.url %}
,您可以使用过滤器where_exp
按集合的任何属性过滤集合。因此,如果我在相册
集合中有以下项目:
---
title: My Amazing Album
---
...
我可以通过该名称获取项目的第一个匹配项:
{% assign album = site.albums
| where_exp:"album", "album.title == 'My Amazing Album'"
| first %}
请注意,我使用first
过滤器,因为where\u exp
返回匹配项的数组
然后以我喜欢的任何方式使用它:
<h1>{{ album.title }}</h1>
{{album.title}
我不能保证这种方法的构建性能,但我必须想象它比液体循环更好。这将消耗构建时间。可惜没有更好的办法了。
<h1>{{ album.title }}</h1>