カートページ:カート内商品による条件分岐について

Topic summary

カートページで、特定のコレクション(subscription)に属する商品がカート内にある場合のみ、紙袋オプションなどの要素を表示・非表示する条件分岐の実装方法についての質問。

質問者の状況:

  • テーマDawnを使用
  • Shopifyの公式ガイド「カートページにギフト包装のオプションを追加する」を参照して実装中
  • subscriptionコレクションの商品がカート内にある時は、紙袋オプション(bagOptionクラス)を非表示にしたい

回答の方向性:

  • cart.itemsから各商品がsubscriptionコレクションに属するか判別し、Liquidのif文で表示切り替えが可能
  • ただし、この方法ではカート内で該当商品を削除した際にリアルタイムで表示が更新されない
  • 動的な更新が必要な場合はJavaScriptの併用が必要(例:Liquidで該当コレクションの全商品IDを取得してJS変数に出力し、JSで表示を制御)
  • 複雑な要件の場合は、Shopifyパートナーやテーマサポートへの依頼も推奨

関連するShopify APIドキュメント(cart、product.collections、line_item)へのリンクが提供されている。

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

急ぎで質問がございます。

テーマDawnで構築を行っております。

以下の「カートページにギフト包装のオプションを追加する」を参照して、

cartページにて、紙袋の有無を選択できるようなカスタマイズを実装しています。

https://help.shopify.com/ja/manual/online-store/themes/themes-by-shopify/vintage-themes/customizing-vintage-themes/add-gift-wrap-option

 <div class="bagOption">中身は省略</div>

この度、新しいコレクション(仮にsubscriptionとします)を追加したのですが、

subscriptionの商品がカート内に入っている時は、以下の"bagOption”のクラス自体を非表示にしたいです。

もしお分かりになる方がいらっしゃいましたら、ご教授いただけますと幸いです。

よろしくお願い申し上げます。

前提不明のため以下の前提と要望に絞って方向性のみ記載します。

  • subscriptionコレクションに属する商品がカートに入っている時にのみ、カートページで何らかの動作を実行したい
  • liquidのみので対応

■方向性の一例

cart.itemsから辿ってsubscriptionコレクションに属する商品か否かを判別し、その情報を使ってif文を作り表示切り替えを行うことが検討できます。

ただしこの方法ではカート内で該当商品を削除した場合に表示切り替えは動作しません。

この点に関しては対応が必要な場合はJSを併用する必要があると思いますが、恐らく仕組みから考え直す必要があるかなと思います。

試していないため推測ですが、liquidで該当コレクション内の全商品のIDを取得してJS内に変数として出力しておき、その変数を元にJSで表示を操作するなどが考えられるかもしれません。

参考:

https://shopify.dev/docs/api/liquid/objects/cart#cart-items

https://shopify.dev/docs/api/liquid/objects/line_item#line_item-product

https://shopify.dev/docs/api/liquid/objects/product#product-collections

https://shopify.dev/docs/api/ajax/reference/cart

以上ですが、想定が間違っている場合は申し訳ありません。

他方、想定は合っているが回答がよくわからないという場合はエキスパートやパートナーに依頼することをお勧めします。

または、記載されているヘルプにある通りテーマサポートの依頼が検討できるかもしれません。