类型

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

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

字符串

字符串是用单引号或双引号包裹的字符序列

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

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

数字

数字包括浮点数和整数

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

布尔值

布尔值是 truefalse。声明布尔值时不需要引号

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

Nil

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

if 块和其他检查语句真伪性的 Liquid 标签的条件下,Nil 被视为 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