gpt4 book ai didi

jekyll - For 循环,将每两个帖子包装在一个 div 中

转载 作者:行者123 更新时间:2023-12-03 10:48:00 24 4
gpt4 key购买 nike

基本上,我正在使用 Jekyll (使用 Liquid 模板语言),我正在尝试编写一个 for将每两个项目包装在 div 中的循环.

这是我当前的循环:

<div>
{% for post in site.posts %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
</div>

这将输出四个像这样的帖子:
<div>
<a href="#">Title</a>
<a href="#">Title</a>
<a href="#">Title</a>
<a href="#">Title</a>
</div>

我想要的四个帖子的输出是:
<div>
<a href="#">Title</a>
<a href="#">Title</a>
</div>

<div>
<a href="#">Title</a>
<a href="#">Title</a>
</div>

我怎样才能做到这一点?

最佳答案

我知道我玩游戏迟到了,但我发现我觉得这是一个相当优雅的解决方案,不会让人感觉很笨拙。

for循环的 limitoffset params,我们可以一次迭代一行,每行 N 个帖子。

首先,我们计算需要枚举的行数:

{% assign rows = site.posts.size | divided_by: 2.0 | ceil %}

Ruby 等效项是 rows = (posts.size / 2.0).ceil (奇数有自己的行)。

接下来,我们将遍历行:
{% for i in (1..rows) %}
<div>

现在我们需要用 (i - 1) * 2 计算集合偏移量(使用 forloop.index0 ):
  {% assign offset = forloop.index0 | times: 2 %}

然后我们可以从行的偏移量开始迭代帖子切片(相当于 Ruby 中的 posts[offset, 2]):
    {% for post in site.posts limit:2 offset:offset %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}

关闭行 div元素和for循环:
  </div>
{% endfor %}

就是这样!

在 Ruby 中,这将是:
rows = (posts.size / 2.0).ceil # the number of rows
(1..rows).each do |i|
offset = (i - 1) * 2
# <div>
posts[offset, 2].each do |post|
# <a href="#{post.url}>#{post.title}</a>
end
# </div>
end

现在一起,在 Liquid 中:
{% assign rows = site.posts.size | divided_by: 2.0 | ceil %}
{% for i in (1..rows) %}
{% assign offset = forloop.index0 | times: 2 %}
<div>
{% for post in site.posts limit:2 offset:offset %}
<a href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
</div>
{% endfor %}

希望这可以帮助某人!

关于jekyll - For 循环,将每两个帖子包装在一个 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20924471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com