【Shopify】liquidのオブジェクトについてまとめてみた (video, video_source, Deprecated object properties)

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

`video`、`video_source`、`非推奨（Deprecated）`のオブジェクトをまとめていきます。

[こちら](https://shopify-dev.shopifycloud.com/docs/themes/liquid/reference/objects)を参考にしました。

#videoオブジェクト
videoオブジェクトの概要について[ドキュメント](https://shopify-dev.shopifycloud.com/docs/themes/liquid/reference/objects/video)からの引用です。

>`video`オブジェクトには、Shopify管理画面の商品詳細ページからアップロードされた動画に関する情報が入っています。
`product`オブジェクトの`media`属性からアクセスすることができます。

`video`オブジェクトの属性について見ていきましょう。

##video.alt
Shopify管理画面の商品詳細ページに設定されている動画の`alt`タグを返します。

##video.aspect_ratio
動画ファイルのアスペクト比を返します。


##video.duration
動画ファイルの録画時間を返します。

##video.id
動画の`media_id`を返します。

##video.media_type
`video`オブジェクトの型を返します。

これは、`product`オブジェクトのメディア配列をフィルタリングするために使用されます。

```.liquid
{% assign videos = product.media | where: "media_type", "video" %}

{% for video in videos %}
  {{ video.alt }}
{% endfor %}
```
>Promotional video for stroller
Features video for stroller


##video.position
productオブジェクトのメディア配列内での動画（video）のインデックス番号（位置）を返します。

##video.preview_image
動画のプレビュー画像を返します。

##video.sources
`video_source`オブジェクトの配列を返します。


#video_sourceオブジェクト
video_sourceオブジェクトの概要について[ドキュメント](https://shopify-dev.shopifycloud.com/docs/themes/liquid/reference/objects/video-source)からの引用です。

>`video_source`オブジェクトは、商品に関連付けられた動画のソースファイルに関する情報を返し、videoオブジェクトの`sources`配列からアクセスできます。

##video_source.format
ビデオソースファイルのフォーマットを返します。（`mp4`/`m3u8`）

##video_source.height
ビデオソースファイルの高さを返します。

##video_source.mime_type
ビデオソースファイルのMIMEタイプを返します。

MIMEタイプとは、データの形式を指定している

動画のMIMEタイプには、application/x-shockwave-flash（Flash）、video/mp4（MP4）、video/mpeg（MPEG）などがあります。

##video_source.url
ビデオソースファイルのURLを返します。


##video_source.width
ビデオソースファイルの幅を返します。


#非推奨（Deprecated）オブジェクト
非推奨（Deprecated）オブジェクトの概要について[ドキュメント](https://shopify-dev.shopifycloud.com/docs/themes/liquid/reference/objects/deprecated-objects)からの引用です。

以下のLiquidオブジェクトのプロパティーは非推奨とされ、異なるものに置き換えられました。

##checkout object properties
**代替オブジェクト：`checkout.order`**

###checkout.unavailable_line_items
チェックアウトの利用ができないラインアイテムを返します。

常に空なので非推奨です。


###checkout.fulfilled_line_items
チェックアウトで満たされたラインアイテムを返します。

常に空なので非推奨です。

###checkout.unfulfilled_line_items
チェックアウトの未充足アインアテムを返します。

常に`line_items`と等しいので非推奨です。

###checkout.fulfillment_status
チェックアウトの履行状況を返します。

常に`unfulfilled`を返すので、非推奨です。

###checkout.financial_status
チェックアウトの財務状況を返します。

常に`nil`を返すので非推奨です。

###checkout.fulfilled_at
チェックアウトが完了した日付を返します。

常に`nil`を返すので非推奨です。

###checkout.discount
チェックアウト時に適用されたが保存されていない割引を返します。

注文状況ページでは、保存されていない割引は存在できないため、非推奨です。


###checkout.discounts
チェックアウト時に適用された割引を返します。

金額は顧客の現地通貨で表示されます。

```.liquid
{% for discount in checkout.discounts %}
* {{ discount.code }}: {{ discount.amount | money }}
{% endfor %}
```
>\* secret-discount: $12.00

全割引タイプと全割引詳細に対応していないため非推奨です。

###checkout.cancelled
チェックアウトがキャンセルされたかどうかを返します。

チェックアウトをキャンセルことは出来きず、常に`false`を返すので非推奨です。


##discount object properties
`discount`オブジェクトには、id、コード、金額、貯金額、タイプなどの割引に関する情報が含まれています。

全割引タイプと割引の詳細に対応していないため、非推奨です。

**代替オブジェクト：`discount_allocation`、`discount_application`**

`discount`オブジェクトには、以下の

###discount.amount
割引額を返します。

###discount.code
割引タイトルかコードを返します。


###discount.id
割引のIDを返します。

###discount.savings
割引額（-500）を返します。`discount.amount`の符号が負になった値。

###discount.title
割引のタイトルかコードを返します。

###discount.total_amount
割引が複数のラインアイテムに適用されている時に、その合計金額を返します。

1000円割引したら、`1000`が返されます。

###discount.total_savings
割引が複数のラインアイテムに適用されている時に、その合計金額（負の値）を返します。

1000円割引したら、`-1000`が返されます。

`total_amount`の符号が負になった値。

###discount.type
割引の種類を返します。

割引のタイプは以下の3通りです。

+ FixedAmountDiscount：固定（ **500円引き**等 ）割引
+ PercentageDiscount：割合（ **20% OFF** 等 ）割引
+ ShippingDiscount：配送割引

##line item object properties
###line_item.discounts
スクリプトがライナイテムに適用した割引を返します。

この属性は、スクリプトエディタアプリを使用している場合にのみ値を持ちます。

すべての割引タイプとすべての割引の詳細が含まれていないため、非推奨です。

**代替案：`line_item.discount_allocation`**

###line_item.line_price
ラインアイテムに含まれる全商品の合計価格を返します。

コードの割引が含まれないために非推奨です。

**代替案：`line_item.final_line_price`**


###line_item.price

Shopify Scriptsからの割引を含めた商品価格を返します。

コードの割引が含まれていないため、非推奨です。

**代替案：`line_item.final_price`**


###line_item.total_discount
ラインアイテムに適用されている全ての割引の合計金額を返します。

この属性は、スクリプトエディタアプリを使用している場合にのみ値を持ちます。

全ての割引が含まれていないため非推奨です。

**代替案：`line_item.line_level_total_discount`**


##order object properties
###order.discounts
注文に対する割引の配列を返します。

全ての割引タイプと割引詳細が含まれていないため、非推奨です。


```.liquid
{% for discount in order.discounts %}
  Code: {{ discount.code }}
  Savings: {{ discount.savings | money }}
{% endfor %}
```
>Code: SUMMER16
Savings: -$20.00

**代替案：`order.discount_applications`**


##shop object properties
###shop.enabled_locales
`shop_locale`オブジェクトの配列を返します。

それぞれのオブジェクトは、ストアで公開されているストアロケールを表します。

公開されているロケールを返すことが明確ではなかったため、非推奨となりました。

**代替案：`shop.published_locales`**


###shop.locale
ストアが現在表示している言語ロケール（`en`、`fr`、`pt-BR`）を返します。

この値は、リクエストに対するコンテキストであり、ストアリソースのプロパティでないため、非推奨です。

**代替案：`request.locale`**


#終わりに
今回の記事はここまでになります。

お疲れさまでした。

# 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