我正在使用Jekyl2.5.3构建一个原型,并需要在我的布局中从_data文件中访问特定的行。
在文件_data/badges.csv中,我有:
name, image_url
Heat, http://pathtoimage.com/image-1.png
Water, http://pathtoimage.com/image-2.png
Zoning, http://pathtoimage.com/image-3.png
...在_layout/page.html中,我试图从badges.csv访问Zoning行,方法是向site.data传递一个值,如下所示:
{% assign badge = site.data.badges.name["Zoning"] %}
{{ badge.image_url }}最后,我将使["Zoning"]成为一个页面变量,根据页面加载特定的徽章。
我试过[Zoning],['Zoning'],["Zoning"]。这些都不会输出任何数据,并且不会在jekyll build期间抛出错误。
如何从CSV访问特定行?
发布于 2015-10-27 17:22:41
我相信CSV文件被视为数组而不是映射。如果您想在CSV中找到一个特定的条目,您可以这样做:
{% for badge in site.data.badges %}
{% if badge.name == "Zoning" %}
{{ badge.image_url }}
{% endif %}
{% endfor %}然后,您可以将其移到_includes中,并传递一个参数来重用该功能:
_includes/badge-url.html
{% for badge in site.data.badges %}
{% if badge.name == include.name %}
{{ badge.image_url }}
{% endif %}
{% endfor %}包括分区
{% include badge-url.html name="Zoning" %}发布于 2020-12-08 22:59:56
Jekyl4.2引入了find 液体标签,这对此很有帮助。
例如,在_data/people.csv上使用CSV文件的格式类似于:
name, slug, title
Jane Doe, jane-doe, VP of Stuff你可以这样做:
{% assign person = site.data.people | find:"slug","jane-doe" %}
{{ person.name }}从CSV上打印出他们的名字。
https://stackoverflow.com/questions/33370965
复制相似问题