Shopify の「メタオブジェクト」機能を使って登録した商品の情報を出力しようとしたとき、通常の出力方法では gid が返って来てしまいます。
そこから商品名等の値を取り出す方法がなかなかわからず苦労したので、ここに対処法をまとめておきます!
目次
一般的なメタオブジェクトの出力方法
「単一行のテキスト」や「日付」など、値がそのまま出力されるだけのフィールドについては、下記の形式で出力可能です。
例)メタオブジェクト「sample」内のフィールド「sample.hogehoge」を出力する場合
{%- for object in shop.metaobjects.sample.values -%}
<p>{{object.hogehoge}}</p>
{%- endfor -%}
しかし、フィールドタイプが「商品」だった場合はここで「gid:」から始まる文字列が返ってきてしまいます。
gid://shopify/Product/1234567890123
gid: で返ってくるときの対処法
gid: で返ってきてしまった時は、下記の方法を試してみてください。
例)メタオブジェクト「sample」内の、商品タイプフィールド「sample.hogehoge」から、商品タイトルを出力する場合
{%- for object in shop.metaobjects.sample.values -%}
{%- assign items = object.hogehoge.value | reverse | reverse -%}
{%- for item in items -%}
<p>{{item.title}}</p>
{%- endfor -%}
{%- endfor -%}
ポイントは2行目の | reverse | reverse
です。
こちらを追加することで、なぜか gid が商品情報の配列として取り出せるようになります。
この解決方法は、Shopify コミュニティ内でどなたかの質問に対し回答として挙げられていた方法なのですが、該当ページがどこだったかわからなくなってしまいました……。
Shopify 公式には「gid:」から商品情報を取り出す方法がないとのことで、裏技みたいなもののようです。
参考
gid と reverse フィルターの詳細については下記を参照してください。
Global IDs in Shopify APIs
Learn how global IDs work in Shopify APIs and how to retrieve global IDs for different objects.
Liquid filters
Liquid filters are used to modify Liquid output.