商品ごとにフォーム入力を追加したい

Topic summary

課題:
Shopifyの商品ページにカスタムフォーム入力(line item property)を追加したが、一部の商品では不要なため非表示にしたい。

試したこと:

  • UI Elements Generatorを使用してフォーム追加に成功
  • myproducts.liquidをブロックとして購入ボタン上に読み込む形で実装
  • しかし、表示される商品でもカートにデータが渡らない問題が発生

解決策:
_osamu_iwasakiが提案した方法:

  • 商品ごとにメタフィールドを作成して出し分けを行う
  • {% if product.metafields.custom.receipt == true %}のような条件分岐でline item propertyのHTMLを制御
  • コードは<form>タグ(Liquidでは{% form %})内に記述する必要がある

結果:
質問者は解決し、感謝のコメントで終了。

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

お世話になっております。
以下のページから、商品ページの入力からカートへ渡すフォームを追加することができました。
https://ui-elements-generator.myshopify.com/pages/line-item-property

ところが、商品によってはその入力が必要では無いものがあり、

非表示にしたいので「myproducts.liquid」を追加し、購入ボタンの上に読み込めるブロックにしたいと思ったのですが、表示はされるものの、カートにはデータを渡せませんでした。

どこに、問題があるのか、ご教示いただけたら助かります。
よろしくお願いいたします。


  

  

{% schema %}
  {
    "name": "myproducts",

  "presets": [
   {
     "name": "希望確認"
   }
 ]
}
{% endschema %}

コード全体みてないので推測ですが、
HTML上の(Liquidでは{% form %}{% endform %})タグの間に、

上記のline item propertyが入っていないのではないでしょうか?

あと関係なさそうですが、下部のschemaは機能してなさそうです。

@_osamu_iwasaki
返信をいただき、ありがとうございます。すみません、質問ですが
追加のコードを直接カートのmain-product.liquidに書くとカートまで呼び込めたのですが、
ブロックにして、商品ごとに呼びたいのですが、その場合も、追加した
myproducts.liquidをmain-product.liquidの中に記述する必要があるのでしょうか?

その場合は、商品ごとにメタフィールド作って出し分けをするといいと思います。

{% if product.metafields.custom.receipt == true %}
line item propertyのHTML
{% endif %}
1 Like

ありがとうございます!できました。
大変助かりました。