【问题标题】:Jekyll / Liquid include files dynamicallyJekyll / Liquid 动态包含文件
【发布时间】:2014-05-08 12:02:57
【问题描述】:

目前我正在使用 Jekyll 开发一个新网站,但在那里遇到了一些问题。我有一个布局页面,我可以在其中使用每个页面的变量定义背景图像。

布局:

class="background background-{{ page.header_bg }}"

页面:

---
header_bg: storm
---

但现在我想根据变量值动态包含一些文件。好吧,我可以用一些 if 或 case 语句来做到这一点,但实际上我想做一些类似的事情

{% include page.header_bg %}

但这不起作用,因为 Jekyll 正在寻找一个名为“page.header_bg”而不是值的文件。

有人可以帮帮我吗?

【问题讨论】:

    标签: include jekyll liquid


    【解决方案1】:

    根据to the docs,你需要把变量名放在额外的{{ }}里面。

    引用链接:

    ProTip™:使用变量作为文件名

    您希望嵌入的文件的名称可以是文字(如 上面的示例),或者您可以使用变量,使用类似液体的变量 语法如{% include {{my_variable}} %}

    【讨论】:

    • 我可以使用相同的语法从_data 加载数据文件吗:{% for item in site.data[page.menu] %}
    • 如何使用这种方法传递参数?我试过{% include {{path_to_file}} {{arguments}} %} 但这不起作用。
    【解决方案2】:

    我知道这个问题已有 6 年的历史,但这里有一个明确的答案供后人参考。您需要先将assignpage.header_bg 指向一个变量,然后在include 语句中使用该变量。

    {% assign headerBg = page.header_bg %}
    
    {% include headerBg %}
    

    如果您尝试在include 语句中直接使用page.header_bg,则会收到错误Liquid Exception: Invalid syntax for include tag

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      相关资源
      最近更新 更多