【Shopify】メタオブジェクトのエントリーを下層ページにした際のLiquidカスタマイズ方法を紹介!
Published: Updated:
こんにちは、Webデザイナーの 夢拓(MUHIRO)です。
Shopifyのメタオブジェクトは、「エントリーをウェブページとして公開する」をオンにすることでエントリーを下層ページとして公開することができます。
当サイトのWeb制作現場で使う用語集ページもこの機能を使用して作成しています!
この記事では、メタオブジェクトのエントリーをページとして実装する際のLiquidのカスタマイズ方法を紹介します。
この記事はこんな方におすすめ!
- Shopifyのストアフロント開発をする方
この記事を通して、メタオブジェクトのエントリーを下層ページ化する際のLiquidカスタマイズ方法が学べ、Shopifyをさらに活用できるようになります。
それでは、どうぞ!
Index
[ CloseOpen ]
メタオブジェクトとは?
2023年1月にアーリーアクセスされたShopifyの機能です。
メタオブジェクトは、カスタムデータを構造化して保存・管理するための機能です。
製品、コレクション、顧客など、様々なリソースに関連付けて追加情報を保存できます。メタオブジェクトは、フィールドと呼ばれる複数の属性で構成され、テキスト、画像、日付など様々なデータ型をサポートしています。
管理画面から簡単に作成・編集でき、オンラインストアのテーマやAPIを通じてアクセスできます。
これにより、製品仕様、サイズ表、FAQなど、構造化されたカスタムコンテンツを柔軟に作成し、ストアフロントに表示することが可能になります。
メタオブジェクトのエントリーを下層ページにした際のLiquidカスタマイス
こちらの解説ではどのファイルに記述するなどは省略しております。Liquidの記述方法のみの解説となります。
request.page_type
"request.page_type”は「metaobject」を返します。
request.page_typeとは
ShopifyのLiquidテンプレート言語で使用できるrequestオブジェクトのひとつで、現在表示されているページのタイプを返すLiquid変数です。
これにより、開発者は特定のページタイプに応じて異なるコンテンツや機能を表示させることができます。全ページ共通コードの「layout/theme.liquid」でよく使用します。
metaobjectオブジェクトでページの情報を取得する
metaobjectオブジェクトにはエントリーの情報が格納されています。
metaobjectオブジェクトとは
ShopifyのLiquidテンプレート言語で使用できるmetaobjectオブジェクトは、Liquidテンプレート内でカスタムデータ構造にアクセスするための機能です。
このオブジェクトを使用することで、開発者は複雑な構造化データを作成し、オンラインストアで表示できます。metaobjectは複数のフィールドを持ち、製品やコレクションなどのShopifyリソースに関連付けることができます。
Liquid内では、metaobjectの各フィールドにアクセスして値を取得し、動的にコンテンツを生成できます。
★・・・metaobject_systemプロパティで取得します。
エントリーハンドルを取得
{{ metaobject.system.handle }} ★
エントリータイトル(ページタイトル)を取得
{{ metaobject.title }}
エントリーページURLを取得
{{ metaobject.system.handle }} ★
エントリーIDを取得
{{ metaobject.system.id }} ★
メタオブジェクト定義のタイプ(ハンドル)を取得
{{ metaobject.system.type }} ★
request.pathを使って定義ハンドルとエントリーハンドルを取得する
request.pathとは
ShopifyのLiquidテンプレート言語で使用できるrequestオブジェクトのひとつで、現在のページへのパス(URLのドメイン名以降の部分)を返します。
例えば、URLが「https://example.com/collections/all」の場合、“request.path”は「/collections/all」を返します。“request.path”は既存のページへのURLのみを返すため、存在しないURLの場合は空の文字列を返す可能性があります。
metaobjectオブジェクトを使用せず取得する方法です。
{%- assign metaobject_info = request.path | split: '/' -%}
{%- assign metaobject_dl_handle = metaobject_info[2] -%} // 定義ハンドル
{%- assign metaobject_entry_handle = metaobject_info[3] -%} // エントリーハンドル
”request.path”からページのパスを取得し、splitフィルターを使用して「/」を基準に配列に変換します。
こうすることで、配列の2番目と3番目の要素をそれぞれ定義ハンドルとエントリーハンドルとして取得できます。
request.pathを配列にする際の注意点
”metaobject_info”を出力すると「pages 定義ハンドル エントリーハンドル」のような形で出力されます。
そのため、定義ハンドルを取得使用する場合、インデックス1を指定しそうになります。
”request.path”は常に先頭にスラッシュ(/)を含むパス文字列を返します。
これをsplitフィルダーで分割すると、最初の要素(インデックス0)は空の文字列になります。
これは、先頭のスラッシュの直後から実際のパス要素が始まるためです。
この仕様はURLの絶対パス構造を反映しており、Shopifyのシステムで一貫性のあるパス処理を可能にしています。開発者はこの特性を理解し、適切にパス要素にアクセスすることが重要です。
フィールドの情報をストアフロントに表示する
metaobjectオブジェクトを使用してストアフロントに表示をします。
{{ metaobject.フィールドのキー }}
{{ metaobject.フィールドのキー.value }}
メタオブジェクトの出力方法についての詳しい解説
以下の記事で詳しく解説しています。
関連記事 Related articles
-
Published:
Updated:Shopify Liquidを使ったメタフィールド・メタオブジェクトの値(フィールドの値)の出力方法を解説!
Shopifyでオンラインストアを構築する際、「メタフィールド」と「メタオブジェクト」機能を活用することで、標準フィールド以外にカスタムフィールドを追加し、より詳細な情報を管理・表示できます。しかし、これらの値をテーマに正しく表示させるには、Liquidテンプレート言語の知識とメタフィールド・メタオブジェクトの構造理解が必要です。 本記事では、メタフィールドとメタオブジェクトの基本概念を解説し、Shopifyテーマでの出力方法を具体的に説明します。単一の値の出力から、リスト形式データの扱い方、複雑な構造を持つメタオブジェクトデータの出力方法まで、実践的なコード例を交えて紹介します。これにより、より柔軟で情報豊かなオンラインストアの構
-
Published:
Updated:【Shopifyテーマカスタマイズ】Liquidテンプレート言語のrequestオブジェクトについて解説!
ShopifyのLiquidテンプレート言語におけるrequestオブジェクトは、ページの表示内容を動的にコントロールするために役立つ強力な機能です。特に、ユーザーがアクセスしているURLや言語設定、デバイス情報などを取得し、これに基づいて条件分岐を行うことで、より柔軟でパーソナライズされたページ作成が可能になります。このリクエストデータを活用することで、多言語対応ページやデバイスに応じたレイアウト変更、特定の条件下でのプロモーション表示などがLiquidコード内で実装して最適化をすることができます。
Disclaimer
- This blog provides technical information and knowledge based on the author’s experience, but does not guarantee their accuracy or universality. The information is current as of the time of writing and may become outdated due to technological advances. Please use this information at your own risk. We recommend seeking professional advice if necessary.
- The program code provided on this blog is based on the author’s best knowledge, but its accuracy and completeness are not guaranteed. We are not responsible for any damages or issues arising from the use or execution of the code. Please use the code at your own risk.
- Copyrights for any screenshot images used on this site belong to the respective rights holders. If there is any issue with the publication, please contact us via the contact form.
- If you move to another site via a link from this site, we are not responsible for the information, services, etc., provided at the destination site.
- We are not responsible for any damages resulting from the content published on this site.
