Knowledge Diary

【Shopifyテーマカスタマイズ】Liquidテンプレート言語のrequestオブジェクトについて解説!

Published: Updated:

【Shopifyテーマカスタマイズ】Liquidテンプレート言語のrequestオブジェクトについて解説!

こんにちは、Webデザイナーの 夢拓(MUHIRO)です。

ShopifyのLiquidテンプレート言語におけるrequestオブジェクトは、ページの表示内容を動的にコントロールするために役立つ強力な機能です。

特に、ユーザーがアクセスしているURLや言語設定、デバイス情報などを取得し、これに基づいて条件分岐を行うことで、より柔軟でパーソナライズされたページ作成が可能になります。
このリクエストデータを活用することで、多言語対応ページやデバイスに応じたレイアウト変更、特定の条件下でのプロモーション表示などがLiquidコード内で実装して最適化をすることができます。

この記事では、Liquidのrequestオブジェクトの基本から、よく使用されるプロパティの詳細な解説、そして具体的な使い方の例までを順に紹介していきます。

この記事を読んで、Shopifyストア運営で役立つ実践的なテクニックについても触れていきます。
requestオブジェクトの活用法をしっかり学び、さらに柔軟で高度なストアカスタマイズができるようになります。

それでは、どうぞ!

Index

CloseOpen

requestオブジェクトとは?

ShopifyのLiquidテンプレート言語で使用できるrequestオブジェクトは、現在のHTTPリクエストに関する情報を提供する重要なLiquid変数です。
このオブジェクトを使用することで、現在のリクエストに基づいて動的にコンテンツを変更したり、特定の条件下でのみコードを実行したりできます。テーマのカスタマイズや条件付きコンテンツの表示に非常に有用です。

requestオブジェクトのプロパティ一覧

  • request.design_mode
  • request.host
  • request.locale
  • request.origin
  • request.page_type
  • request.path
  • request.visual_preview_mode

request.design_mode とは?

テーマエディタ(Shopifyのカスタマイズ画面)で表示しているかどうかを判定するためのプロパティです。
テーマカスタマイズ画面でだけ表示するパーツを切り分けたいときなどに便利です。

request.design_mode が返す値

値(boolean) 意味
true テーマエディタでプレビュー中
false 公開中の状態
request.design_mode が true の場合
request.design_mode が false の場合

request.host とは?

現在アクセスしているホスト名(ドメイン)を返します。
開発環境やサブドメインごとに条件分岐したい場合に役立ちます。

request.host が返す値

ドメイン 値(string)
Shopifyのサブドメインの場合 your-store.myshopify.com
独自ドメインの場合 example.com

request.locale とは?

ShopifyのLiquidテンプレート言語で使用できるrequestオブジェクトのひとつで、現在のリクエストの言語や地域の情報を取得するために使われるLiquid変数です。
このオブジェクトは特に多言語対応に便利で、Shopifyのテーマやカスタムコードにおいて、ユーザーがアクセスしている言語に応じた表示や設定の切り替えに利用されます。

request.locale.iso_code は、ISO 639-1形式の言語コード(例えば en、ja、fr など)を返します。

request.locale.iso_code が返す値

言語 ISO 639-1形式の言語コード
日本語 ja
英語 en
簡体字 zh-cn
繁体字 zh-tw
韓国語 ko

上記は一例です。

request.locale の使用例

Liquid

{%- liquid
    case request.locale.iso_code
        when 'en' // 英語
        when 'zh-CN' // 簡体
        when 'zh-TW' // 繁体
        when 'ko' // 韓国語
        else // 日本語
    endcase
-%}

request.locale を使用した関連の記事

request.origin とは?

リクエストの送信元のURLスキームとホストを返します。
フォーム送信や外部連携時の参照、セキュリティチェックなどに応用可能です。

request.origin が返す値

URL 値(string)
Shopifyのサブドメインの場合 https://your-store.myshopify.com
独自ドメインの場合 https://example.com

request.page_type とは?

ShopifyのLiquidテンプレート言語で使用できるrequestオブジェクトのひとつで、現在表示されているページのタイプを返すLiquid変数です。
これにより、開発者は特定のページタイプに応じて異なるコンテンツや機能を表示させることができます。

全ページ共通コードの「layout/theme.liquid」でよく使用します。

request.page_type が返す値

ページ(パス)
トップページ(/) index
コレクション一覧(/collections) list-collections
コレクション(/collections/コレクションハンドル) collection
商品(/products/商品ハンドル) product
カート(/cart) cart
ブログ(/blogs/ブログハンドル) blog
ブログ記事(/blogs/ブログハンドル/記事ハンドル) article
独自ページ(/pages/ページハンドル) page
メタオブジェクトのエントリーをページ化(/pages/定義ハンドル/エントリーハンドル) metaobject
アカウント(/account) customers/account
会員登録(/account/register) customers/register
ログイン(/account/login) customers/login
住所を変更する(/account/addresses) customers/addresses
注文履歴(/account/order) customers/order
アカウントを有効にする(メール文から確認するページ) customers/activate_account
パスワードをリセットする(メール文から確認するページ) customers/reset_password
検索(/search) search
法務関連 policy
エラー 404
ギフトカード gift_card
パスワード(ストア公開前のみ表示されるページ) password

request.page_type を使用した関連の記事

request.path とは?

現在のURLパスをクエリパラメータなしで取得します。
ページパスに応じたスタイル適用や処理の分岐に役立ちます。

request.page_type が返す値

ページ(パス) 値(string)の例
コレクション /collections/frontpage
商品 /products/your-product-handle
カート /cart

request.visual_preview_mode とは?

ビジュアルプレビュー(A/Bテストやテーマプレビューなど)で表示されているかどうかを判定します。
プレビュー環境限定の表示や、実稼働環境と切り分けたいときに使います。

まとめ

いかでしたでしょうか?
今回の記事では、ShopifyにおけるLiquidテンプレートのrequestオブジェクトについて詳しく解説しました。

今回のポイントをまとめますと、次のとおりです。

今回の記事のまとめ

  • requestオブジェクトは現在のページの情報(URLやホスト、ロケールなど)を取得するために使われる
  • request.path や request.locale を使うことで、ページや言語ごとの表示切り替えが可能
  • 実装の自由度を高める反面、キャッシュやクエリの扱いには注意が必要

他にもShopify Liquidに関する技術や実用テクニックを随時発信しています。
「役に立った」と思っていただけた方は、ぜひブックマークやSNSでのシェアをお願いいたします!

最後までお読みいただきありがとうございました!

免責事項

  • 当ブログでは、執筆者の経験に基づいた技術情報や知識を提供していますが、その正確性や普遍性を保証するものではありません。情報は執筆時点のものであり、技術の進展により古くなる可能性があります。これらの情報を利用する際は、自己責任で行ってください。必要に応じて専門家の助言を求めることをお勧めします。
  • 当ブログで提供するプログラムコードは、執筆者の最善の知識に基づいていますが、その正確性や完全性を保証するものではありません。コードの利用や実行により生じた損害や問題については、一切の責任を負いかねます。コードの使用は、自己責任で行ってください。
  • 当サイトで使用しているスクリーンショット画像について、著作権はサイトの権利者に帰属します。掲載に不都合がある場合、お手数ですがお問い合わせフォームよりご連絡ください。
  • 当サイトからリンクよって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いかねますのでご了承ください。
  • 当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。