数据类型(Types)
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” 的字符串。
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_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
。