【Shopify】liquidのオブジェクトについてまとめてみた (order, page, page_discription)

# はじめに

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

`order`, `page`, `page_discription`オブジェクトをまとめていきます。



# order オブジェクト

`order`オブジェクトには、`customer.orders`テンプレートからアクセスすることができます。

価格や合計などの金額の属性は、顧客の現地通貨で表示されます。結果を金額として表示するには、`money filter`を使用します。

`order`オブジェクトの属性についてそれぞれ見ていきます。



## order.attributes

`order.attributes`は、注文のカスタムカート属性がある場合にその属性を返します。
カートにカスタム属性を好きなだけ追加することができます。詳しくは[こちら](https://shopify.dev/docs/themes/liquid/reference/objects/cart#cart-attributes)。

`order.attributes`属性をループいている時は、`{{ attribute | first }}`を使って属性名を取得し、`{{ attribute | last }}`を使ってその値を取得することができます。

```.liquid:Input
{% if order.attributes %}
  <p>Order notes:</p>
  <ul>
    {% for attribute in order.attributes %}
      <li><strong>{{ attribute | first }}</strong>: {{ attribute | last }}</li>
    {% endfor %}
  </ul>
{% endif %}
```

```.liquid:Output
<p>Order notes:</p>
<ul>
  <li><strong>Message to merchant</strong>: I love your products! Thanks!</li>
</ul>
```



## order.billing_address

`order.billing_address`は、注文の請求書先住所を返します。



## order.cancelled

`order.cancelled`は、注文がキャンセルされた場合に`true`を、キャンセルされなかった場合に`false`を返します。



## order.cancelled_at

`order.cancelled_at`は、注文がキャンセルされた日時のタイムスタンプを返します。タイムスタンプの書式設定には`date`フィルタを使用します。



## order.cancel_reason

`order.cancel_reason`は、注文がキャンセルされた場合に、以下のキャンセル理由のいずれかを返します。

- items unavailable
- fraudulent order
- customer changed/cancelled order
- other.



## order.cancel_reason_label

`order.cancel_reason_label`は、注文の`order.cancel_reason`の翻訳された出力を返します。

```.liquid:Input
English: {{ order.cancel_reason }}
Japanese: {{ order.cancel_reason_label }}
```

```.liquid:Output
English: Items unavailable
Japanese: 商品は入手できません
```



## order.cart_level_discount_applications

`order.cart_level_discount_applications`は、注文に対する注文固有の`discount applications`の配列を返します。`discount_application`オブジェクトについて、詳しくは[こちら](https://shopify.dev/docs/themes/liquid/reference/objects/discount-application)。


```.liquid:Input
{% for discount_application in order.cart_level_discount_applications %}
  Discount name: {{ discount_application.title }}
  Savings: -{{ discount_application.total_allocated_amount | money }}
{% endfor %}
```

```.liquid:Output
Discount name: SUMMER16
Savings: -¥2,000
```



## order.created_at

`order.created_at`は、注文が作成された時刻のタイムスタンプを返します。`date`フィルタを使用してタイムスタンプをフォーマットします。



## order.customer

`order.customer`は、注文に関連する顧客を返します。



## order.customer_url

`order.customer_url`は、顧客が注文にアクセスするために使用できる一意のURLを返します。

```.liquid:Input
{{ order.name | link_to: order.customer_url }}
```

```.liquid:Output

<p>Order notes:</p>
<a href="http://unreact.myshopify.com/account/orders/d94ec4a1956f423dc4907167c9ef0413">#1235</a>

```



## order.discount_applications

`order.discount_applications`は、注文に対する`discount applications`の配列を返します。


```.liquid:Input
{% for discount_application in order.discount_applications %}
  Discount name: {{ discount_application.title }}
  Savings: -{{ discount_application.total_allocated_amount | money }}
{% endfor %}
```

```.liquid:Output
<p>Order notes:</p>
Discount name: SUMMER16
Savings: -¥2,000
```



## order.email

`order.email`は、注文に関連付けられたメールアドレスが存在する場合に、そのメールアドレスを返します。



## order.financial_status

`order.financial_status`は、注文の`financial_status`を返します。取り得る値は以下の通りです。

- pending
- authorized
- paid
- partially_paid
- refunded
- partially_refunded
- voided



## order.financial_status_label

`order.financial_status_label`は、注文の`financial_status`の翻訳された出力を返します。

```.liquid:Input
English: {{ order.financial_status }}
Japanese: {{ order.financial_status_label }}
```

```.liquid:Output
English: Paid
Japanese: 支払い済
```



## order.fulfillment_status

`order.fulfillment_status`は、注文のフルフィルメント状態を返します。



## order.fulfillment_status_label

`order.fulfillment_status_label`は、注文の`fulfillment_status`の翻訳された出力を返します。

```.liquid:Input
English: {{ order.fulfillment_status }}
Japanese: {{ order.fulfillment_status_label }}
```

```.liquid:Output
English: Unfulfilled
Japanese: 未発送
```



## order.line_items
`order.line_items`は、注文の[ラインアイテム](https://shopify.dev/docs/themes/liquid/reference/objects/line_item)の配列を返します。



## order.line_items_subtotal_price

`order.line_items_subtotal_price`は、注文のラインアイテムの価格の合計を、ラインアイテムの割引を適用した後の価格で返します。
小計金額には、カート割引、税金（価格に税金が含まれていない場合）、送料は含まれていません。

```.liquid:Input
<!-- subtotal = カートの合計金額 - ラインアイテムの割引額 -->
Subtotal: {{ order.line_items_subtotal_price | money }}
```

```.liquid:Output
<!-- ¥5,000の商品をカートに入れて¥500の割引があると -->
Subtotal: ¥4,500
```


## order.location

`order.location`は、注文の物理的な場所を返します（POSのみ）。Shopify管理者のロケーション設定でロケーションを設定することができます。



## order.name

`order.name`は、Shopifyのストア管理画面の「設定 > 一般設定 > 基準とフォーマット」で設定したフォーマットで注文の名前を返します。

```.liquid:Input
{{ order.name }}
```

```.liquid:Output
#1025
```



## order.note

`order.note`は、顧客の注文に関連するメモを返します。
メール通知やオーダープリンターのテンプレートに注文メモを表示するには、`{{ note }}`を使用します。`customers/account.liquid`のようなテンプレートファイルに注文メモを表示するには、`{{ order.note }}`を使用します。

```.liquid:Input
Special instructions: {{ order.note }}
```

```.liquid:Output
Special instructions: 午後5時以降の配達をお願いします。
```



## order.order_number

`order.order_number`は、注文名の整数表現を返します。

```.liquid:Input
{{ order.order_number }}
```

```.liquid:Output
1025
```

これは、注文番号からプリフィックスとサフィックスを取り除いたものです。



## order.order_status_url

`order.order_status_url`は、注文の注文状況ページの一意の URL を返します。



## order.phone

`order.phone`は、注文に関連する電話番号を返します。



## order.shipping_address

`order.shipping_address`は、ご注文のお届け先を返します。



## order.shipping_methods

`order.shipping_methods`は、注文の shipping_method 変数の配列を返します。



## order.shipping_price

`order.shipping_price`は、注文した商品の送料を返します。



## order.subtotal_line_items

`order.subtotal_line_items`は、注文の小計価格の計算に使用する行項目の配列を返します。チップのライン項目は除外します。



## order.subtotal_price

`order.subtotal_price`は、ラインアイテム割引とカート割引の両方を適用した後の注文の全アイテムの小計価格を返します。
小計には税金（価格に税金が含まれていない場合）、送料、チップは含まれていません。



## order.tags

`order.tags`は、注文のすべてのタグの配列を返します。タグはアルファベット順に返されます。

```.liquid:Input
{% for tag in order.tags %}
    {{ tag }}
{% endfor %}
```

```.liquid:Output
leather
sale
special
```



## order.tax_lines

`order.tax_lines`は、注文に対する`tax_line`変数の配列を返します。
`tax_line`についての詳しい説明は[こちら](https://shopify.dev/docs/themes/liquid/reference/objects/tax_line)。

```.liquid:Input
{% for tax_line in order.tax_lines %}
  Tax ({{ tax_line.title }} {{ tax_line.rate | times: 100 }}%): {{ tax_line.price | money }}
{% endfor %}
```

```.liquid:Output
Tax (GST 10.0%): ¥2,000
```



## order.tax_price

`order.tax_price`は、注文の税額を返します。



## order.total_discounts

`order.total_discounts`は、注文に適用されたすべての割引の合計値を返します。



## order.total_net_amount

`order.total_net_amount`は、注文の純額を返します。

`order.total_net_amount`は、返金が適用された後に計算されます。この値は`order.total_price`から`order.total_refunded_amount`を引いたものと同じです。



## order.total_price

`order.total_price`は、注文の合計価格を返します。

`order.total_price`の金額は、返金が適用される前に計算されます。
返金の値を取得するには、`order.total_refunded_amount`プロパティを使用します。



## order.total_refunded_amount

`order.total_refunded_amount`は、ご注文の返金額の合計を返します。



## order.transactions

`order.transactions`は、注文からのトランザクションの配列を返します。



# pageオブジェクト

次に`page`オブジェクトの属性をみていきます。



## page.author

`page.author`は、ページの著者を返します。



## page.content

`page.content`は、ページのコンテンツを返します。



## page.handle

`page.handle`は、ページのハンドルを返します。



## page.id

`page.id`は、ページのidを返します。

ページのidとは、ストア管理画面のページのエディタを開いている時に URL に表示される一意の数字になります。

![ページのid](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/810dd222-9707-2e6b-6f0f-5c741e755a3d.png)




## page.published_at

`page.published_at`は、ページが作成された時刻のタイムスタンプを返します。日付フィルタを使用してタイムスタンプをフォーマットします。



## page.template_suffix

`page.template_suffix`は、`page.`プレフィックスと`.liquid`拡張子を除いて、ページに割り当てられたカスタムページテンプレートの名前を返します。
カスタムテンプレートがページに割り当てられていない場合は`nil`を返します。

```.liquid:Input
<!-- on page.contact.liquid -->
{{ page.template_suffix }}
```

```.liquid:Output
contact
```



## page.title

`page.title`は、ページのタイトルを返します。



## page.title

`page.url`は、ページの URL を返します。

```.liquid:Input
{{ page.url }}
```

```.liquid:Output
/pages/about-us
```



# page_description オブジェクト

`page_description`は、管理画面のそれぞれのセクションで設定されているページの説明を返します。

`page_description`は、検索エンジンのリスティングやソーシャルメディアのフィードで共有された投稿の中でページの簡単な説明を提供するために使用することができます。

```.liquid:Input
<meta name="description" content="{{ page_description}}" />
```

```.liquid:Output
<meta name="description" content="ここにページやブログのエディタで設定したメタディスクリプションが挿入されます。" />
```

商品、ページ、コレクション、ブログ、ブログ記事のリソースの場合、`page_description`は検索結果のプレビューから取得されます。
ホームページの場合、`page_description`は管理画面のオンラインストアの設定から取得します。タイトルとメタディスクリプションの編集については[こちら](https://help.shopify.com/en/manual/promoting-marketing/seo/adding-keywords#edit-the-title-and-meta-description-for-a-page)をご覧ください。



# 終わりに

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

# 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