【问题标题】:How do a loop n.times in Liquid templating using an existing for loop如何使用现有的 for 循环在 Liquid 模板中循环 n.times
【发布时间】:2012-10-28 22:16:57
【问题描述】:

在 ruby​​ 中我可以做 n.times,是否可以在 Liquid 标记中做到这一点?

我当前的循环是:对于 site.posts 中的视频,我的目标是运行此循环 2 次。目前有 4 个对象将通过循环调用,但我想要 8 个。我希望这很清楚!

【问题讨论】:

    标签: loops liquid


    【解决方案1】:

    您应该能够使用带范围的 for 循环(n 是迭代次数):

    {% for num in (1..n) %}
    

    在 Shopify Liquid 的某些情况下,它也可以使用

    {% for num in (1...n) %}
    

    【讨论】:

    • 我当前的循环:对于 site.posts 中的视频,所以我会将其转换为:对于网站帖子中的视频 (1...n)?
    • @TJSherrill,您的评论改变了问题。请更新问题。您的新问题的答案是:{% for video in site.posts limit: n %}。
    • 谢谢,我编辑了这个问题。添加限制:n 只是限制循环可以找到的项目数,它不会强制循环完全迭代两次(n)。
    • 请注意,“严格”语法使用两个点:{% for num in (1..n) %}。您可以在“松弛”模式下使用三个点(这是默认设置)。
    【解决方案2】:

    如果您像我一样想要一个不基于集合长度或内置变量的动态数字,您可以使用包含和默认值以及捕获来创造奇迹

    {% capture count %}{{include.count|default:16}}{% endcapture %}
    {% for num in (1...count) %}
        {{num}}
    {% endfor %}
    

    【讨论】:

      【解决方案3】:

      我在这里玩游戏已经很晚了,但是对于对此感到困惑的任何人,这是您可以做的。

      你接受其他答案所说的:

      {% for num in (1..n) %}
      

      然后你将它包裹在你的另一个 forloop 周围。在site.post循环2次的原始视频请求中,它会像这样循环

      {% for i in (1..2) %}
        {% for video in site.posts %}
          Do your loop stuff here
        {% endloop %}
      {% endfor %}
      

      现在您可以控制原始循环遍历其总集合的次数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-13
        • 2013-10-26
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 2012-07-25
        • 2012-01-07
        • 1970-01-01
        相关资源
        最近更新 更多