将 Jekyll 3.8.6 迁移到 4.0 从导入捕获的变量不再展开

migrating Jekyll 3.8.6 to 4.0 captured variables from import no longer expand

我有一个 Jekyll 网站,上面有关于产品的文章。在每个 post.md 的顶部,我包含一个带有 {%- include vars -%} 的文件。 vars 是包含 {%- include varfiles/product.html id=page.product -%} 的包含文件。它会自动将产品编号抓取到页面中,然后将其传递给 varfiles 文件夹中的 product.html。以下为product.html

{%- assign product = site.data.products | where:"id",include.id | first -%}

<!-- product name -->
{%- if product.name -%}
  {%- capture product-name -%}
    {{ product.name }}
  {%- endcapture -%}
{%- endif -%}


plus a lot more similar to the code above

该文件本质上是多种类型的变量名称创建者,这些创建者基于从产品数据文件中提取的产品属性,该文件是产品列表。结果是当我在任何 post.md 的顶部添加 {%- include vars -%} 时,它会根据前面的产品 ID 号自动生成更容易 remember/use 的变量名称。然后我可以在整篇文章中包含变量名称,例如 {{ product-name }},它会自动解析从 vars include.

创建的变量

问题:当我升级 jekyll 以使用 4.0 时,所有变量都是空的。将 {{ product-name }} 放在 vars 下的 post.md 某处时,它会自动将其转换为产品名称。在 4.0 上它变成空的。我所做的唯一更改是更新到 Jekyll 4.0。如果我降级所有变量工作正常。

似乎有效的解决方法是更改​​

{%- assign product = site.data.products | where:"id",include.id | first -%}

{%- assign product = site.data.products[include.id] -%}

不知道为什么会这样。