我想知道在Liquid模板中查找数组中项目索引的正确方法是什么,并根据索引选择相关项目。目前我能够计算该值,但它似乎是一个字符串,然后我无法在字符串中找到数组中的其他项目。例如,在CMS中:
{% for site_page in site.pages.all %}
{% if site_page.id == page.id %}
{% assign page_index = forloop.index0 %}
{% capture previous_page_index %}
{{ page_index | minus: 1 }}
{% endcapture %}
{% break %}
{% endif %}
{% endfor %}
预期值可以在previous_page_index中找到(在本例中为0)但是,如果我尝试执行site.pages.all[previous_page_index]
之类的操作,则不会收到任何输出。如果我使用硬编码索引值执行相同操作:site.pages.all[0]
它会产生输出。有没有人知道如何在液体中完成这个?
答案 0 :(得分:1)
我能说的最好的就是使用{% for item in array limit:1 offset:forloop.index0 %}
。例如:
require 'liquid'
chars = %w[a b c]
names = %w[alpha bravo charlie]
puts Liquid::Template.parse(<<DONE).render( 'chars'=>chars, 'names'=>names )
{% for c in chars %}
{{c}} is
{% for n in names limit:1 offset:forloop.index0 %}{{n}}{% endfor %}
{% endfor %}
DONE
......产生......
a is
alpha
b is
bravo
c is
charlie
编辑旁边:哎哟。多么丑陋的诱人语言。我了解其目标,但会给用户带来负担is heinous。