v1.9.1
已废弃这个标签已经废弃,请使用封装更好的 render 标签。
引入一个模板
从模板 根路径 引入一个模板:
{% include 'footer.liquid' %}
设置 extname 选项为 ".liquid" 后上面的 .liquid 后缀就可以省略了,等价于:
{% include 'footer' %}
通过 include 渲染一个子模板时,它内部的代码可以访问父模板的变量,但父模板中不能访问它里面定义的变量。
变量传递
父模板里定义的变量可以通过 include 标签的参数列表传递给子模板:
{% assign my_variable = 'apples' %}
{% include 'name', my_variable: my_variable, my_other_variable: 'oranges' %}
with 参数
使用 with...as 语法可以给子模板传递一个变量:
{% assign featured_product = all_products['product_handle'] %}
{% include 'product' with featured_product as product %}
上面的例子中,子模板中 product 会保有父模板中的 featured_product 变量的值。
输出和过滤器
文件名为字符串字面量时,支持 Liquid 输出和过滤器。在拼接文件名时很方便:
{% include "prefix/{{name | append: \".html\"}}" %}
转义字符串字面量里的
"需要转义为\",使用静态文件名可以避免这个问题,见下面的 Jekyll-like 文件名。
Jekyll-like 文件名
设置 dynamicPartials 为 false 来启用 Jekyll-like 文件名,这时文件名不需要用引号包含,会被当作字面量处理。 这样的字符串里面仍然支持 Liquid 输出和过滤器,例如:
{% include prefix/{{ page.my_variable }}/suffix %}
这样文件名里的 " 就不用转义了。
{% include prefix/{{name | append: ".html"}} %}
Jekyll include
v9.33.0
jekyllInclude 用来启用 Jekyll-like include 语法。默认为 false,当设置为 true 时:
- 默认启用静态文件名:
dynamicPartials的默认值变为false(而非true)。但你也可以把它设置回true。 - 参数的键和值之间由
=分隔(本来是:)。 - 参数放到了
include变量下,而非当前作用域。
例如下面的模板:
{% include article.html header="HEADER" content="CONTENT" %}
其中 article.html 的内容是:
<article>
<header>{{include.header}}</header>
{{include.content}}
</article>
注意我们通过 include.header 引用第一个参数,而不是 header。输出如下:
<article>
<header>HEADER</header>
CONTENT
</article>