【Shopify】liquidのオブジェクトについてまとめてみた (fulfillment, gift_card, handle)

# はじめに

この記事は、Liquid オブジェクトについて日本語訳したものです。

`fulfillment`, `gift_card`, `handle`オブジェクトをまとめていきます。



# fulfillment オブジェクト

フルフィルメントとは、注文から発送前の業務全般のことです。

`fulfillment`オブジェクトでは、そのフルフィルメントに関連する値にアクセスすることができます。

[公式ドキュメント](https://shopify.dev/docs/themes/liquid/reference/objects/fulfillment)を参考にしています。



## fulfillment.fulfillment_line_items

`fulfillment.fulfillment_line_items`は、すべてのラインアイテムとそのアイテムの数量を配列で返します。
すでに履行されている、あるいはまだ履行されていないラインアイテムは配列に含まれません。

`line_item`はショッピングカート内の一行を表します。カート内の商品の種類ごとに1つのラインアイテムがあります。

```.liquid:Input
We have fulfilled the following items:
<ul>
{% for line in fulfillment.fulfillment_line_items %}
  <li>{{ line.line_item.title }} x {{ line.quantity }}</li>
{% endfor %}
</ul>
```

```.liquid:Output
We have fulfilled the following items:
* T-shirt - White / Medium x 8
* Adorable boots x 1
```



## fulfillment.tracking_company

`fulfillment.tracking_company`は、フルフィルメントサービスの名前を返します。

```.liquid:Input
Tracking Company: {{ fulfillment.tracking_company }}
```

```.liquid:Output
Tracking Company: Yamato
```



## fulfillment.tracking_number

`fulfillment.tracking_number`は、フルフィルメントの追跡番号が存在する場合、その番号を返します。

```.liquid:Input
Tracking Number: {{ fulfillment.tracking_number }}
```

```.liquid:Output
Tracking Number: 1Z5F44813600X02768
```



## fulfillment.tracking_url
`fulfillment.tracking_url`は、追跡番号のURLを返します。

```.liquid:Input
{{ fulfillment.tracking_url }}
```

```.liquid:Output
http://wwwapps.ups.com/etracking/tracking.cgi?InquiryNumber1=1Z5F44813600X02768&TypeOfInquiryNumber=T&AcceptUPSLicenseAgreement=yes&submit=Track
```



# gift_card オブジェクト

`gift_card`オブジェクトは、Shopifyのギフトカードに関する情報が格納されたオブジェクトです。

`gift_card`オブジェクトは、以下のテンプレートでアクセスできます。

- 「設定 > 通知 > ギフトカードの作成」により作成された電子メール通知テンプレート
- `gift_card.liquid`テンプレートファイル内

`gift_card`変数がもつ属性についてまとめていきます。



## gift_card.balance

`gift_card.balance`は、ギフトカードの残額を返します。



## gift_card.code

`gift_card.code`は、ギフトカードの利用に使用したコードを返します。



## gift_card.currency

`gift_card.currency`は、カードが発行された通貨を返します。この通貨が店舗の通貨となります。



## gift_card.customer

`gift_card.customer`は、ギフトカードが割り当てられている顧客の`costomer`変数を返します。`costomer`変数については[こちら](https://shopify.dev/docs/themes/liquid/reference/objects/customer/)。

```.liquid:Input
こんにちは, {{ gift_card.customer.last_name }}さん！
```

```.liquid:Output
こんにちは、齊藤さん！
```



## gift_card.enabled

`gift_card.enabled`は、ギフトカードが有効な場合に`true`、無効な場合に`false`を返します。



## gift_card.expired

`gift_card.expired`は、ギフトカードの有効期限が切れている場合に`true`、切れていない場合に`false`を返します。




## gift_card.expires_on

`gift_card.expires_on`は、ギフトカードの有効期限を返します。



## gift_card.initial_value

`gift_card.initial_value`は、ギフトカードの初期金額を返します。この金額は、顧客の現地通貨での金額です。



## gift_card.last_four_characters

`gift_card.last_four_characters`は、ギフトカードの交換に使用したコードの最後の4文字を返します。



## gift_card.properties

`gift_card.properties`は、ギフトカードがカートに追加された際に、ギフトカードに割り当てられたラインアイテムのプロパティを返します。



## gift_card.product

`gift_card.product`は、購入したギフトカードに関連する商品を返します。



##  gift_card.url

`gift_card.url`は、ショップのギフトカードのページにリンクしているユニークなURLを返します。
このURLは、`gift_card.liquid`を通してレンダリングされ、`checkout.shopify.com`のドメインで表示されます。



# handle オブジェクト

`handle`オブジェクトは、以下のリソースのハンドルを返します。

- `blogs`
- `articles`
- `collection`
- `pages`
- `products`

検索結果のプレビューの設定項目では、Shopifyの管理画面からリソースのハンドルを表示したり編集したりすることができます。

![handleの画像](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/35099015-6332-7032-216b-026020bd9317.png)




## Webページのターゲッティング

異なるページに異なるコンテンツを表示したい場合に、`handle`オブジェクトを使用して特定のウェブページをターゲットにすることができます。

例えば、ハンドルが`top-secret`のウェブページのみにメッセージを表示するには、次のコードを`theme.liquid`テンプレートに追加します。

```.liquid:Input
{% if handle contains 'secret' %}
  <p>シーッ！これはお前と俺たちの問題だ</p>
{% endif %}
```

```.liquid:Output
<!-- トップシークレットのタイトルと、トップシークレットのハンドルネームが書かれたページに表示される -->
シーッ！これはお前と俺たちの問題だ
```



## 独自のハンドルを持たないWebページ

すべてのWebページが独自のハンドルを持っているわけではありません。

`index.liquid`テンプレートを使用しているストアのホームページは、ハンドルの値を返しません。

```.liquid:Input

{% if handle %}
  <p>あなたは、商品、コレクション、ページ、ブログ、ブログの記事のいずれかを見ています。<p>
{% else %}
  <p>どこか他の場所にいるんでしょうね。楽しんでいるといいね！</p>
{% endif %}
```

```.liquid:Output
<!-- ストアのホームページでは以下のように表示される -->
どこか他の場所にいるんでしょうね。楽しんでいるといいね！
```



## 特殊文字

ハンドルはストアフロントのナビゲーションに使用されるため、そのハンドルには英数字（a-z、0～9）のみを含める必要があります。次の文字は使用できません。

- アクセント（ウムラウトなど）、その他のダイアクリティカル
- `@`, `#`, `$`などの記号
- スペース（空白）

スペースはハイフンに変換され、その他の文字は完全に削除されるか、同等の標準ASCII文字に変換されます。



# 終わりに

今回の記事はここまでになります。
お疲れ様でした。

# Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://coming-soon.reterior.jp/

https://apps.shopify.com/shopify-application-314?locale=ja&surface_detail=%E3%83%AA%E3%83%86%E3%83%AA%E3%82%A2&surface_inter_position=1&surface_intra_position=1&surface_type=search