数据类型(Types)

Liquid 对象可以是以下六种类型之一:

您可以使用 assigncapture 标签来初始化 Liquid 变量。

字符串

字符串是由单引号或双引号括起来的字符序列:

{% assign my_string = "Hello World!" %}

Liquid 不会将转义序列转换为特殊字符。

数字

数字包括浮动数字和整数:

{% assign my_int = 25 %}
{% assign my_float = -39.756 %}

布尔值

布尔值要么是 true,要么是 false。声明布尔值时不需要加引号:

{% assign foo = true %}
{% assign bar = false %}

Nil

Nil 是一个特殊的空值,当 Liquid 代码没有结果时返回。它不是包含字符 “nil” 的字符串。

Nil 在 if 块的条件判断和其他检查语句真实性的 Liquid 标签中被视为 false

在以下示例中,如果用户不存在(即 user 返回 nil),Liquid 将不会打印问候语:

{% if user %}
  Hello {{ user.name }}!
{% endif %}

返回 nil 的标签或输出将不会在页面上打印任何内容。

输入

The current user is {{ user.name }}

输出

The current user is

数组

数组用于保存任何类型变量的列表。

访问数组中的项目

要访问数组中的所有项目,您可以使用迭代标签循环遍历数组中的每个项目。

输入

<!-- if site.users = "Tobi", "Laura", "Tetsuro", "Adam" -->
{% for user in site.users %}
  {{ user }}
{% endfor %}

输出

  Tobi Laura Tetsuro Adam

访问数组中特定的项目

您可以使用方括号 [ ] 来访问数组中的特定项目。数组的索引从零开始。负数索引会从数组的末尾开始计数。

输入

<!-- if site.users = "Tobi", "Laura", "Tetsuro", "Adam" -->
{{ site.users[0] }}
{{ site.users[1] }}
{{ site.users[-1] }}

输出

Tobi
Laura
Adam

初始化数组

您不能仅使用 Liquid 来初始化数组。

然而,您可以使用 split 过滤器将一个字符串拆分为多个子字符串的数组。

EmptyDrop

如果尝试访问已删除的对象,将返回一个 EmptyDrop 对象。在下面的示例中,page_1page_2page_3 都是 EmptyDrop 对象:

{% assign variable = "hello" %}
{% assign page_1 = pages[variable] %}
{% assign page_2 = pages["does-not-exist"] %}
{% assign page_3 = pages.this-handle-does-not-exist %}

检查空值

在访问对象的任何属性之前,您可以检查该对象是否存在。

{% unless pages == empty %}
  <h1>{{ pages.frontpage.title }}</h1>
  <div>{{ pages.frontpage.content }}</div>
{% endunless %}

如果将空字符串和空数组与 empty 进行比较,它们都会返回 true