Types - Phân loại
Các đối tượng Liquid có thể trả về một trong sáu loại sau: String (chuỗi), Number (số), Boolean (hàm luận lý), Nil (vô giá trị), Array (mảng) hoặc EmptyDrop. Biến số Liquid có thể được khởi chạy bằng cách sử dụng tags assign
hoặc capture
.
String - Chuỗi
Chuỗi được gán bằng cách đặt toàn bộ giá trị của biến vào trong dấu ngoặc đơn hoặc ngoặc kép.
{% assign my_string = "Hello World!" %}
Number - Số
Số bao gồm số thực và số nguyên.
{% assign my_int = 25 %}
{% assign my_float = 39.756 %}
Boolean
Booleans có thể được gán là true
hoặc false
. No quotations are necessary when declaring a boolean.
{% assign foo = true %}
{% assign bar = false %}
Nil
Nil là một giá trị rỗng được trả lại khi thực thi một đoạn mã Liquid mà không thể cho ra kết quả. Nó không phải là một chuỗi với các kí tự nil.
Nil được xem như là kết quả sai của các khối điều kiện {% if %}
và các tags Liquid khác khi kiểm tra tính chính xác của một tuyên bố.
Ví dụ dưới đây thể hiện rằng nếu như không có một mã số theo dõi fulfillment.tracking_numbers
(tracking number) được nhập vào một fulfillment. Câu lệnh if sẽ không thể trả về văn bản nằm trong nó.
{% if fulfillment.tracking_numbers %}
There is a tracking number.
{% endif %}
Bất cứ tag hay kết quả nào cho ra là nil
sẽ không hiển thị bất cứ thứ gì trên màn hình.
Tracking number: {{ fulfillment.tracking_numbers }}
Tracking number:
Array - Mảng
Mảng chứa một danh sách của tất cả các loại ký tự.
Truy cập tất cả các items trong một mảng
Để truy cập các item trong một mảng, bạn có thể xâu chuỗi mỗi item trong mảng bằng cách sử dụng tag for
hoặc tag tablerow
.
{% for tag in product.tags %}
{{ tag }}
{% endfor %}
sale summer spring wholesale
Truy cập một item cụ thể trong một mảng
Bạn có thể sử dụng kí tự móc vuông [
]
để truy cập một item cụ thể trong một mảng. Chỉ số của mảng bắt đầu từ 0.
if product.tags = "sale", "summer", "spring", "wholesale"
{{ site.users[0] }}
{{ site.users[1] }}
{{ site.users[3] }}
sale
summer
spring
Initializing arrays - Gán mảng
Không thể gán một mảng trong Liquid. Ví dụ, trong lập trình Java bạn có thể gán mảng như sau:
<script>
var cars = ["Saab", "Volvo", "BMW"];
</script
Trong Liquid, bạn phải sử dụng bộ lọc split để phá vỡ một chuỗi đơn thành một mảng các chuỗi con.
EmptyDrop
Một đối tượng EmptyDrop được trả về bất cứ khi nào bạn cố gắng truy cập một đối tượng không tồn tại bằng handle (ví dụ một bộ sưu tập, một trang hay một blog đã bị xóa hoặc ẩn đi). Trong ví dụ dưới đây, page_1
, page_2
and page_3
đều là các đối tượng 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 %}
Các đối tượng EmptyDrop chỉ có một thuộc tính, thuộc tính empty? Điều này luôn luôn đúng
Các bộ sưu tập và các trang có tồn tại thì sẽ không có thuộc tính empty?. Thuộc tính empty? của chúng là “falsy” , có nghĩa là được gọi từ bên trong câu lệnh if và trả về kết quả false. Khi sử dụng một câu lệnh unless trong các bộ sưu tập và các trang còn tồn tại, thuộc tính empty? sẽ trả về true
Checking for emptiness - Những ứng dụng của thuộc tính empty? trong themes
Sử dụng thuộc tính empty?, bạn có thể kiểm tra xem một trang có tồn tại hay không trước khi truy cập bất cứ thuộc tính nào khác của nó.
{% unless pages == empty %}
<!-- This will only print if the page with handle "about" is not empty -->
<h1>{{ pages.frontpage.title }}</h1>
<div>{{ pages.frontpage.content }}</div>
{% endunless %}
Việc biết một trang có tồn tại hay không rất quan trọng. Điều đó giúp tránh xuất ra các phần tử HTML rỗng cho trang, ví dụ:
<h1></h1>
<div></div>
Bạn cũng có thể thực hiện cách kiểm tra giống hệt như vậy với các bộ sưu tập:
{% unless collections.frontpage == empty %}
{% for product in collections.frontpage.products %}
{% include "product-grid-item" %}
{% else %}
<p>We have a "frontpage" collection, but it's empty.</p>
{% endfor %}
{% endunless %}