Jekyll 是否受到 Shopify 的 Liquid 规范声明的 50 项 for-loop 最大值的影响?

Does Jekyll suffer anywhere from the 50-item for-loop maximum declared by Shopify's Liquid specification?

{% for %} 循环标签的 Shopify Liquid docs 声明:

for loops can output a maximum of 50 results per page. In cases where there are more than 50 results, use the paginate tag to split them across multiple pages.

This question 证实,截至四年前,50 件商品的限制在 Shopify 中有效。


但是,如果我将 Jekyll post 与 content 拼凑在一起,如:

.{% for var in (1..100) %} {{ var }} .{% endfor %}

它按照我的预期在构建中呈现,包括从 1 到 100 的所有整数:

所以,显然至少 一些 for Jekyll 中的循环不受这个 50 项限制的约束。

Jekyll 是否完全摆脱了这种限制?或者,在某些情况下 for 循环会意外地在 50 个项目处被截断?

不,Jekyll没有这种限制。

  • 根据 Liquid documentation there are multiple versions of Liquid: "The most popular versions of Liquid that exist are Liquid, Shopify Liquid, and Jekyll Liquid." Jekyll's Liquid documentation simply links back to Liquid documentation which doesn't mention any built-in fixed limitation, that Shopify Liquid documentation 的说法。
  • 当我搜索这个限制 in conjunction with Shopify, I found many results about the built-in limit. But in conjunction with Jekyll 时,我只能找到关于手动应用限制的主题 - 因为 Jekyll 中的 for 循环默认是无限的。
  • 你展示了一个 for 循环的例子,说 "some for loops" 是无限的。我想不出任何其他类型的 for 循环,也许只是那些迭代集合的循环,比如 posts。所以我创建了一个 Bash 脚本来测试 Jekyll 是否有这种限制。该脚本创建一个新项目,创建 1000 个示例 post 副本,构建站点并计算索引页面上的 post 链接。 (默认示例项目的索引页列出了所有 post 没有分页。)对我来说 returns 1000,这意味着 Jekyll 不会在 50.

    处截断结果。
    #!/bin/bash
    N=1000
    F=2018-08-14-welcome-to-jekyll
    rm -rf limit-test
    jekyll new limit-test
    cd limit-test
    for i in $(seq 2 $N); do
      cp _posts/$F.markdown _posts/$F-$i.markdown
    done
    jekyll build
    grep "post-link" _site/index.html | wc -l
    # 1000