我在_post
目录中有一些帖子,我需要使用Bootstrap
(并使用Jekyll
)在浏览器中显示两列。这是我的代码:
{% capture cant_element %}{{ site.posts.size | divided_by:2 }}{% endcapture %}
{% for i in (0..cant_element) %}
<div class="row">
<div class="col-md-6">
{% capture new_i %}{{ i | times:2 }}{% endcapture %}
{{ new_i }}
{{ site.posts[new_i].title }}
</div>
<div class="col-md-6">
{% capture new_i_plus %}{{ i | times:2 | plus:1 }}{% endcapture %}
{{ new_i_plus }}
{{ site.posts[new_i_plus].title }}
</div>
</div>
{% endfor %}
我无法看到(在浏览器中)变量new_i
和new_i_plus
但未显示帖子标题(site.posts[new_i_plus].title
)
为什么呢?谢谢
答案 0 :(得分:0)
capture
和assign
代码。任何{% capture %}any code here{% endcapture %}
都会返回一个字符串。
因此,当您尝试按索引编号获取元素时,例如{{ site.posts[new_i].title }}
其中new_i
是一个字符串,它就像执行{{ site.posts['0'].title }}
一样,并且它不会返回任何内容<{1}}字符串不是索引。
执行'0'
之类的作业将返回{% assign new_i = i | times:2 %}
(一个数字)。您的Fixnum
现在会转换为{{ site.posts[new_i].title }}
,并会返回一些内容,因为{{ site.posts[0].title }}
是一个数字和一个真实的索引。
new_i
将返回绝对值。如果你有3个帖子,这将返回1,你的循环将始终忽略具有奇数索引的最后一个帖子。
使用liquid iteration tags可以更有效地完成。
{{ site.posts.size | divided_by:2 }}