循环jekyll集合

时间:2015-11-24 22:13:06

标签: loops jekyll liquid

我有以下代码

<div>
 {% for note in site.regnotes %}
   {% if note.regulationno == page.regulationno %}
     <p>
      {{ note.regulationno }} - {{ note.url }}
     </p>
   {% endif %}
 {% endfor %}
</div>

此代码循环遍历jekyll网站中的regnotes集合,检查当前注释规则是否与页面规则相同,如果是,则显示规则名称和网址 - 即当前页面的网址。如何更改此代码以包含上一页的网址,当前页面和下一页。我正在寻找三个网址 - 之前,当前和下一个? - &#34; page.previous.url&#34; jekyll中的变量似乎不适用于集合。

这可能是其他代码中的样子

for i=1 to number of items in the regnotes collection
  if current note == page note
    print page[i].url        //current page url
    print page[i-1].url      //previous page url
    print page[i+1].url      //next page url
  end if
end for

我想我尝试todo的是通过数组索引引用集合中的项目。似乎无法使语法正确。

1 个答案:

答案 0 :(得分:0)

由于您是程序员,您只需要知道您需要使用forloop.index0来了解您在for循环中的位置(https://docs.shopify.com/themes/liquid-documentation/objects/for-loops#index0)。

代码如下:

<div>
 {% for note in site.regnotes %}
   {% assign current_index = forloop.index0 }}
   {% assign next_index = current_index | plus: 1 %}
   {% assign prev_index = current_index | minus: 1 %}
   {% if note.regulationno == page.regulationno %}
     <p>
      {{ note.regulationno }} - {{ note.url }}
     </p>
     {% if site.regnotes[prev_index] %}<a href="{{ site.regnotes[prev_index].url }}">prev</a>{% endif %}
     {% if site.regnotes[next_index] %}<a href="{{ site.regnotes[next_index].url }}">next</a>{% endif %}
   {% endif %}
 {% endfor %}
</div>