Passing parameters to inclusion in Liquid templates

拟墨画扇 提交于 2019-12-20 08:24:10

问题


On my Jekyll-powered website I have an inclusion that does something function-like, but I can't figure out how to pass it parameters correctly.

When I use {% include ... %}, passing parameters like this..

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

..it just passes the literal string {{ baz.quux }} which is, of course, not what I wanted! I want to pass the value of baz.quux. How do I do this?

Thanks!


回答1:


There are two ways to achieve this. I have tested both approaches against the github-pages version of Jekyll.

Using Capture

Assuming you are referencing {{ foo }} in the code of your include, you need to assign a value to foo before calling the include.

Such as:

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

Using parameters to Include

This allows you to control the scope of the variable, which it looks like you want. There is some detail of how to set this up in the templates documentation.

You were nearly right with the syntax, in the template you would use:

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

The part that was missing is that the variable needs to be referenced differently in the code of the include file, you need to use {{ include.foo }}




回答2:


Enter the variable without quotes or parentheses, like that:

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

In your case:

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

It works in my site.

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




回答3:


Alongside David Hutchison's, there is a third solution:

Using assign

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

Now you can reference {{ foo }} in your included file.



来源:https://stackoverflow.com/questions/21976330/passing-parameters-to-inclusion-in-liquid-templates

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!