【问题标题】:migrating Jekyll 3.8.6 to 4.0 captured variables from import no longer expand将 Jekyll 3.8.6 迁移到 4.0 从导入捕获的变量不再扩展
【发布时间】:2020-07-05 12:24:51
【问题描述】:

我有一个 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 -%} 时,它会根据frontmatter 中的产品ID 号自动生成更容易记住/使用的变量名称。然后我可以在整篇文章中包含变量名称,例如 {{ product-name }},它会自动从 vars 包含创建的变量解析。

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

【问题讨论】:

  • 我已经复制了这个,它是一个 Jekyll 错误。您可以在这里填写错误:github.com/jekyll/jekyll/issues/…
  • 谢谢您的验证。有时间我会提交一个问题
  • 看来这个bug已经被this patch解决了。只需要等待新版本。
  • 啊啊啊太棒了。我的解决方法让我前进,但很高兴听到他们仍在解决这个问题。

标签: ruby jekyll liquid static-site


【解决方案1】:

似乎可行的解决方法是改变

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

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

不知道为什么会这样。

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 2014-12-28
    • 2019-01-17
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多