「バリエーション(親)」にメタフィールド(カスタムデータ)を設定したい。

Topic summary

商品のバリエーション設定において、個別の選択肢(S、M、Lなど)ではなく、バリエーショングループ全体(「サイズ」「カラー」など)にメタフィールドを追加したいという相談。

具体的な要望:

  • 各バリエーション(S、M、L)ではなく、親要素の「サイズ」自体に注釈を付けたい
  • 例:「サイズ」→「※サイズによって素材が異なる場合があります」
  • 「カラー」→「※カラーによって商品重量が異なります」

提案された解決策:

  • バリエーションへの直接的なメタフィールド紐付けは困難
  • Liquidテンプレートの条件分岐で代替可能
  • Dawnテーマの場合、main-product.liquid内の{%- for option in product.options_with_values -%}に条件分岐コードを挿入することで実装可能

結果:
提案されたコードで概ね実装に成功。質問者は解決策に感謝し、カスタマイズを継続中。

Summarized with AI on November 13. AI used: claude-sonnet-4-5-20250929.

相談内容

設定 > カスタムデータ

から、「商品 > バリエーション」にメタフィールドを追加することは出来ると思います。

しかしこちらで追加したものは、

各商品ページの「各バリエーション(選択肢1つ1つ)」に対して追加されます。

今回は、そうではなくその親にメタフィールドを追加したいです。

例えば通常であれば、

===

サイズ

S M L

===

とあるとして、

「商品 > バリエーション」に追加したフィールドは、

各「S M L」の中で設定できます。

そうではなく、

「サイズ」に対してメタフィールドを設定したい、と考えております。

理由

例えば「サイズ」「カラー」というバリエーションがあったとします。

その中で、

「サイズ」→「※サイズによって素材が異なる場合があります。」

「カラー」→「※カラーによって商品重量が異なります。」

というように、そのバリエーション(親)に対しての注釈を付けたい、

という部分でございます。

(こちらの用途を達成できるのであれば、メタフィールドでなくても構いません)

分かりづらい内容で大変恐れ入りますが、

ご教示いただけますと幸いです。

バリエーションにメタフィールドを紐づけるのは難しいかと思います。

メタオブジェクトを利用するなどいくつか代案はありますが

下記コードをliquidテンプレート内に挿入することで

特定のオプションがあった場合に、注釈をいれることは実現可能です。

{% for option in product.options %}
    
      {% if option == 'サイズ' %}
        

※サイズによって素材が異なる場合があります。

      {% elsif option == 'カラー' %}
        

※カラーによって商品重量が異なります。

      {% endif %}
    

  {% endfor %}

追記:

最も理想形は、添付画像のように、

「各バリエーションに属した感じで注釈を表示」としたい感じです。

(※以下の画像はDevツールで手動でDOMを書き換えたイメージになります)

御指南ありがとうございます!

そうですよね、、、

でもLiquidの条件分岐で代替できる旨、

そしてコードまで、ありがとうございます。

こちらの案もバックアップとして使いたいと思います。

心強いコメントに感謝いたします。

メタオブジェクト

というものについて少し調べてみます。

状況把握いたしました。

例えばDawnですと、main-product.liquid の

{%- for option in product.options_with_values -%} の中に下記コードを挿入すると

イメージ通りの表示が可能です。

{% if option.name == 'サイズ' %}
      

※サイズによって素材が異なる場合があります。

    {% elsif option.name == 'カラー' %}
      

※カラーによって商品重量が異なります。

    {% endif %}

他テンプレートの場合も、バリエーションごとにinputを生成している部分のコードを

探してその中に、オプションの名前ごとに表示を変更する、という分岐を

書けば実現できます。

続けてご指南いただきありがとうございます!

概ね、頂いた内容で実装できました!

より理想系にするため引き続きカスタムしますが、

考え方と記述法を知れたおかげで次に繋がりました。

本当にありがとうございます!

1 Like