首页 文章

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

提问于
浏览
48

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

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

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

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

谢谢!

3 回答

  • 1

    有两种方法可以实现这一目标 . 我已经针对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 }}

  • 73

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

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

    在你的情况下:

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

    它适用于我的网站 .

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

  • 0

    与David Hutchison一起,还有第三个解决方案:

    使用assign

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

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

相关问题