Jekyll 将参数传递给液体模板中的包含项

Jekyll 将参数传递给液体模板中的包含项,jekyll,liquid,Jekyll,Liquid,在我的Jekyll支持的网站上,我有一个功能类似的包含,但我不知道如何正确地传递它的参数 当我使用{%include…%}时,像这样传递参数 {% include function.liquid foo="{{ baz.quux }}" %} …它只是传递文本字符串{{baz.qux}},这当然不是我想要的!我想传递baz.qux的值。我该怎么做 谢谢 实现这一点有两种方法。我已经在github pages版本的Jekyll上测试了这两种方法 使用捕获 假设您在include的代码中引用了{{

在我的Jekyll支持的网站上,我有一个功能类似的包含,但我不知道如何正确地传递它的参数

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

{% include function.liquid foo="{{ baz.quux }}" %}
…它只是传递文本字符串
{{baz.qux}}
,这当然不是我想要的!我想传递
baz.qux
的值。我该怎么做


谢谢

实现这一点有两种方法。我已经在github pages版本的Jekyll上测试了这两种方法

使用捕获 假设您在include的代码中引用了
{{foo}
,则需要在调用include之前为foo赋值

例如:

{% capture foo %}{{ baz.quux }}{% endcapture %}
{% include function.liquid %}
使用参数包括 这允许您控制变量的范围,看起来就像您想要的那样。在中有一些关于如何设置的详细信息

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

{% include function.liquid foo=baz.quux %}
缺少的部分是变量需要在include文件的代码中以不同的方式引用,您需要使用
{{include.foo}

在Shoppify液体中 从2021年起,您可以执行以下操作:

{% include 'snippet-file' with bar, foo: baz, foo2: baz2 %}
在snippet文件中,使用
{{snippet file}
检索bar,使用
{{foo}}
检索baz

对于Liquid语句,只需使用不带
{{}}
的变量名,例如:

{% if snippet-file==0 and foo2==':)' %}
请注意,它不会像上一节中显示的那样作为include.foo2工作


还请注意,
include
已被弃用,对于新开发,您应该以类似的方式使用
render

输入不带引号或括号的变量,如下所示:

{% include footer.html param="value" variable-param=page.variable %}
就你而言:

{% include function.liquid foo=baz.quux %}
它在我的网站上运行


发件人:

除了David Hutchison的,还有第三种解决方案:

使用
现在,您可以在包含的文件中引用
{{foo}

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

jekyll v4.1.1

{% assign title = 'this is my tittle' %}
{% include subscribeBtn.html title = title %}
然后在模板中:

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

@Nick我做了更多的研究并更新了我的答案。带参数的include语法毕竟是可能的。对此有什么想法::我有一个类似的问题:(第二种语法非常出色。我在文档中看不到它,但它很有效!除了纯文本或变量外,还有没有其他方法可以在
include
中传递HTML?我尝试过用捕获传递HTML内容,但它被呈现为文本。@RamPatra可能最好写下你自己的问题,并详细说明你到底在尝试/拥有什么。)IED这显然是首选的方式。当6年前提出这个问题时,可能不可用。
<h3>{{ title }}</h3>