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>