将参数传递给Liquid模板中的包含

时间:2014-02-23 23:43:45

标签: jekyll liquid

在我的Jekyll支持的网站上,我有一个类似函数的包含,但我无法弄清楚如何正确传递它。

当我使用{% include ... %}时,传递这样的参数..

{% include function.liquid foo="{{ baz.quux }}" %}

..它只传递文字字符串{{ baz.quux }},这当然不是我想要的!我想传递baz.quux的值。我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:74)

有两种方法可以实现这一目标。我已经针对Jekyll的github-pages版本测试了这两种方法。

使用Capture

假设您在include的代码中引用{{ foo }},则需要在调用include之前为foo分配一个值。

如:

{% capture foo %}{{ baz.quux }}{% endcapture %}
{% include function.liquid %}

使用参数包含

这允许您控制变量的范围,它看起来像您想要的。有一些细节如何在the templates documentation中进行设置。

您使用的模板中的语法几乎是正确的:

{% include function.liquid foo=baz.quux %}

缺少的部分是需要在包含文件的代码中以不同方式引用变量,您需要使用{{ include.foo }}

答案 1 :(得分:1)

输入没有引号或括号的变量,如下所示:

{% include footer.html param="value" variable-param=page.variable %}

在你的情况下:

{% include function.liquid foo=baz.quux %}

它适用于我的网站。

来自:https://github.com/jekyll/jekyll/issues/3577#issue-61988857

答案 2 :(得分:1)

截至2020年9月1日,它的工作方式如下:

jekyll v4.1.1

{% assign title = 'this is my tittle' %}
{% include subscribeBtn.html title = title %}

然后在模板中:

<h3>{{ title }}</h3>