我有一个包含对象的数据文件,我想在Jekyll中使用指定的索引。
我的页面正在调用include这样:
{% include components/header-filter.html items="0" %}
0
是我想在这种情况下使用的索引。
我的包括:
{% assign filterID = include.items %}
{% capture id %}{{ filterID }}{% endcapture %}
{% assign filter = site.data.filters[id] %}
这一直有效,直到它到达第3行,此时它不输出任何内容。
我做错了什么?
干杯!
答案 0 :(得分:1)
我能够通过以下更改来实现此目的:
使用items
作为整数而不是字符串调用include:
{% include components/header-filter.html items=0 %}
(请注意,这假设您对包含位置没有路径问题。在本地运行jekyll,我坚持将其放在/_inlcudes
)
删除capture
行,然后将filterID
传递到下一行 - 不需要它,可能会导致问题:
{% assign filterID = include.items %}
{% assign filter = site.data.filters[filterID] %}
然后你的评论“它什么也没输出”,你需要输出一些东西(可能刚刚从你的例子中省略了,但为了完整性,让我们假设filters
有一个名为{{ {1}}):
name
答案 1 :(得分:1)
你可以通过'切掉中间人'来做到这一点 {%include components / header-filter.html items = 0%}
{% assign filter = site.data.filters[include.items] %}
您的工作原因不是因为捕获将其转换为字符串。您可以使用数学过滤器将字符串转换为整数。例如:
{% assign id = id | plus: 0 %}
它的值不会改变,但液体现在将它视为整数。
或者,您可以通过省略引号来将其称为整数。 {% include components/header-filter.html items=0 %}
答案 2 :(得分:0)
使用forloop
助手
{% for offer in site.data.companies %}
<li data-target="#carouselExampleCaptions" data-slide-to="{{forloop.index0}}"></li>
{% endfor %}
这将给出
<li data-target="#carouselExampleCaptions" data-slide-to="0"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
...