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

临时禁用标签处理。这对于生成某些使用冲突语法的内容非常有用,例如 MustacheHandlebars

输入

{% 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 标签。