在我的Jekyll驱动的网站上,我有一个类似函数的包含,但我无法弄清楚如何正确传递它的参数 .
当我使用 {% include ... %} 时,传递这样的参数..
{% include ... %}
{% include function.liquid foo="{{ baz.quux }}" %}
..只是传递文字字符串 {{ baz.quux }} ,当然,这不是我想要的!我想传递 baz.quux 的值 . 我该怎么做呢?
{{ baz.quux }}
baz.quux
谢谢!
有两种方法可以实现这一目标 . 我已经针对Jekyll的github-pages版本测试了这两种方法 .
假设您在include的代码中引用了 {{ foo }} ,则需要在调用include之前为foo赋值 .
{{ foo }}
如:
{% capture foo %}{{ baz.quux }}{% endcapture %} {% include function.liquid %}
这允许您控制变量的范围,它看起来像您想要的 . 有一些细节如何在the templates documentation中进行设置 .
您将使用的模板中的语法几乎正确:
{% include function.liquid foo=baz.quux %}
缺少的部分是需要在包含文件的代码中以不同方式引用变量,您需要使用 {{ include.foo }}
{{ include.foo }}
输入没有引号或括号的变量,如下所示:
{% include footer.html param="value" variable-param=page.variable %}
在你的情况下:
它适用于我的网站 .
来自:https://github.com/jekyll/jekyll/issues/3577#issue-61988857
与David Hutchison一起,还有第三个解决方案:
{% assign foo = baz.quux %} {% include function.liquid %}
现在您可以在包含的文件中引用 {{ foo }} .
3 回答
有两种方法可以实现这一目标 . 我已经针对Jekyll的github-pages版本测试了这两种方法 .
使用Capture
假设您在include的代码中引用了
{{ foo }}
,则需要在调用include之前为foo赋值 .如:
使用参数包含
这允许您控制变量的范围,它看起来像您想要的 . 有一些细节如何在the templates documentation中进行设置 .
您将使用的模板中的语法几乎正确:
缺少的部分是需要在包含文件的代码中以不同方式引用变量,您需要使用
{{ include.foo }}
输入没有引号或括号的变量,如下所示:
在你的情况下:
它适用于我的网站 .
来自:https://github.com/jekyll/jekyll/issues/3577#issue-61988857
与David Hutchison一起,还有第三个解决方案:
使用assign
现在您可以在包含的文件中引用
{{ foo }}
.