Liquid 中的 Template 模板标签
模板标签用于告诉 Liquid 在何处禁用对注释或非 Liquid 标记的处理,以及如何建立模板文件之间的关系。
comment 注释代码
允许你在 Liquid 模板中留下未渲染的代码。任何位于 comment
开始和结束块之间的文本都不会被打印(不会显示,HTML中不会包含),并且其中的任何 Liquid 代码也不会被执行。
输入
{% assign verb = "turned" %}
{% comment %}
{% assign verb = "converted" %}
{% endcomment %}
任何放在 {% comment %} 和 {% endcomment %} 标签之间的内容
都会被 {{ verb }} 成注释。
输出
在 `` 标签之间的任何内容都会被作为注释处理,不会在输出中显示。
Inline comments 内联注释
你可以使用内联注释来阻止表达式被渲染或输出。标签内的任何文本也不会被渲染或输出。
你可以创建多行内联注释。但是,每行必须以 #
开头。
输入
{% # for i in (1..3) -%}
{{ i }}
{% # endfor %}
{%
###############################
# 这是一个注释
# 可以跨多行
###############################
%}
输出
liquid
标签中的内联注释
您可以在 liquid
标签 内使用内联注释标签。该标签必须用于您希望注释的每一行。
输入
{% liquid
# 这是一个注释
assign topic = '学习关于注释的内容!'
echo topic
%}
输出
学习关于注释的内容!
raw
临时禁用标签处理。这对于生成某些使用冲突语法的内容非常有用,例如 Mustache 或 Handlebars。
输入
{% raw %}
在 Handlebars 中,{{ this }} 会被 HTML 转义,但 {{{ that }}} 不会。
{% endraw %}
输出
在 Handlebars 中,{{ this }} 会被 HTML 转义,但 {{{ that }}} 不会。
liquid
将多个标签包含在一组定界符内,以便更简洁地编写 Liquid 逻辑。
{% liquid
case section.blocks.size
when 1
assign column_size = ''
when 2
assign column_size = 'one-half'
when 3
assign column_size = 'one-third'
else
assign column_size = 'one-quarter'
endcase %}
由于在 liquid
标签内打开的任何标签块也必须在同一标签内关闭,因此使用 echo
来输出数据。
echo
在渲染的 HTML 中输出一个表达式。这与将表达式包裹在 {{
和 }}
中相同,但它可以在 liquid 标签内使用,并且支持 过滤器。
输入
{% liquid
for product in collection.products
echo product.title | capitalize
endfor %}
输出
Hat Shirt Pants
render
在当前模板中插入另一个模板的渲染内容。
{% render "template-name" %}
注意,你不需要写文件的 .liquid
扩展名。
渲染模板中的代码不会自动访问父模板中使用 变量标签 分配的变量。同样,渲染模板中分配的变量也无法被其他模板中的代码访问。
render (parameters 参数)
使用 变量标签 分配的变量可以通过将它们作为参数列出在 render
标签上,传递给模板。
{% assign my_variable = "apples" %}
{% render "name", my_variable: my_variable, my_other_variable: "oranges" %}
可以将一个或多个对象传递给模板。
{% assign featured_product = all_products["product_handle"] %}
{% render "product", product: featured_product %}
with
可以使用 with
和可选的 as
参数将单个对象传递给模板。
{% assign featured_product = all_products["product_handle"] %}
{% render "product" with featured_product as product %}
在上面的示例中,渲染模板中的 product
变量将保存父模板中 featured_product
的值。
for
可以使用 for
和可选的 as
参数为可枚举对象的每个值渲染一次模板。
{% assign variants = product.variants %}
{% render "product_variant" for variants as variant %}
在上面的示例中,模板将针对每个产品变体渲染一次,variant
变量将在每次迭代中保存不同的产品变体对象。
使用 for
参数时,渲染模板中可以访问 forloop
对象。
include
include
标签已被弃用;请改用 render
。
在当前模板中插入另一个模板的渲染内容。
{% include "template-name" %}
include
标签的工作方式类似于 render
标签,但它允许渲染的模板内部访问并覆盖父模板中的变量。由于它处理变量的方式降低了性能并使 Liquid 代码更难以阅读和维护,因此已被弃用。
请注意,当使用 render
标签渲染模板时,不能在模板内部使用 include
标签。