我应该如何将分配的变量传递给包含的 Jekyll 文件?

Bil*_*net 1 html liquid jekyll

我使用 github pages 来托管一个 jekyll 网站。为了在在线基本 URL 和语言环境基本 URL 之间快速切换,我在默认布局文件的开头有一个变量:

<!--{% assign root = site.github.url %}-->
{% assign root = "." %}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在包含的文件中使用该变量,则它不起作用。我知道它应该被称为 as{{ include.root }}并且到目前为止我尝试了几种变体,但没有一个奏效:

  {% include rail.html root =  root %}
  {% include rail.html root =  page.root %}
  {% include rail.html root =  {{ root }} %}
Run Code Online (Sandbox Code Playgroud)

知道我应该做什么吗?

请注意,我正在使用该default.html文件作为布局从索引文件中调用包含。我可以root在该索引文件中正确打印变量。

另外,如何共享父数据上下文而不必将所有参数传递给我包含的文件?


编辑:看起来我有什么问题。我尝试将内嵌帖子放入包含中,并且数据上下文完全共享。不知道为什么它只在包含中不适用于我的根变量

mar*_*nuy 5

包含标记具有以下语法: {% include file.ext param='value' param2='value' %}

  • {% include rail.html root = page.root %}不起作用,因为root没有定义为 的属性page

  • {% include rail.html root = {{ root }} %}有错误的语法,你必须从源代码中删除整行,否则会build失败。

  • 第一个是正确的:{% include rail.html root = root %} 然后在_includes/rail.html{{ include.root }}应该打印root值,如果这不起作用,错误在另一个地方,而不是在包含中。

边注

如果在包含之前定义变量,则可以直接使用它而无需include.

{% assign root = "." %}
{% include rail.html %}
Run Code Online (Sandbox Code Playgroud)

_includes/rail.html

Hello {{root}}
Run Code Online (Sandbox Code Playgroud)