类型
Liquid 对象可以是以下六种类型之一
您可以使用 assign
或 capture
标签初始化 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”的字符串。
在 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_1
、page_2
和 page_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
。