将 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] -%}
不知道为什么会这样。
我有一个 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] -%}
不知道为什么会这样。