【Dawn】商品の購入点数を制限したい

Topic summary

Dawnテーマ14.0.0で特定商品に購入個数制限を設けたい質問。

実装した内容:

  • 過去の類似質問を参考に、cart-drawer.liquidとmain-cart-items.liquidにmax属性を追加するコードを挿入
  • 商品管理画面でカスタムメタフィールド「order_limit」を設定
  • チェックアウト画面まで進めるが、設定した個数以上をカートに入れられる状態

問題点:
個数制限が機能せず、保存時にエラーも出ない。メタフィールドの設定は完了している。

提案された解決策:
テーマアップデートによりコードが変更されている可能性を指摘。cart-drawer.liquidに{% if item.variant.quantity_rule.max != null %}という条件が追加されているため、以下の対応を提案:

  • !===に変更
  • 追加したコードの上下にあるif文を削除

現状:
提案通りに変更したが、個数制限は実装されず。変更内容に誤りがある可能性について追加の助言を求めている。

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

どなたかご教示ください。

使用テーマ:Dawn 14.0.0

参考にした質問

https://community.shopify.com/post/2002588

上記質問の方と同様に、特定の商品にだけ個数制限を設けたいと思っています。

ここに記載のあった回答を参考に、各liquidファイルに以下の内容を追記しております。

main-product.liquid 「class=“quantity__input”」部分

260行目に以下を挿入し保存

max="{% if product.metafields.custom.order_limit.value %}{{ product.metafields.custom.order_limit.value }}{% else %}99{% endif %}"

cart-drawer.liquid(スニペットの方)「class=“quantity__input”」部分

303行目に以下を挿入し保存(302行目は元々あったmax以下をコメントアウトしたものです)

max="{% if item.product.metafields.custom.order_limit.value %}{{ item.product.metafields.custom.order_limit.value }}{% else %}99{% endif %}"

main-cart-items.liquid「class=“quantity__input”」部分

264行目(261~263行目は元からあった部分をコメントアウトしたもの)

max="{% if item.product.metafields.custom.order_limit.value %}{{ item.product.metafields.custom.order_limit.value }}{% else %}99{% endif %}"

カスタムしたメタフィールドの設定は以下の通りです。

特に保存の際にエラーなどは出ず、商品管理画面で購入数制限のメタフィールドの設定はできるのですが

設定した個数以上をカートにいれることも、チェックアウト画面まで進むことも可能です。

そのため、個数制限がうまく機能していないと判断しました。

他に編集するべき項目があればご教示ください。

よろしくお願いいたします。

あくまでコードを見ただけで推測した回答になりますので、あらかじめご了承ください。

テーマのアップデートにより、参考にした回答からコードが変わっているように見えます。cart-drawer.liquidに以下の条件が追加されています。

{% if item.variant.quantity_rule.max != null %}

つまり、item.variant.quantity_rule.max に有効な値があるときにのみ個数制限が適用される、という設定になっています。

解決策としては、

・今回追加したコードの上下にあるコードを削除する(ifとendifの行)

・item.variant.quantity_rule.max != nullをitem.variant.quantity_rule.max == nullにしてしまう

などがあると思いますが、他の機能に影響する可能性もあるので、もし試す場合は自己責任で慎重に行ってください。

ご提案ありがとうございます。

追加したコードの上にあった!=となっているif文を削除し、==に変更をしてみましたが、個数制限が実装されませんでした。

同様のコードが存在したmain-cart-items.liquidの方も変更をしております。

そもそも変更の内容に誤りがありますでしょうか?

お忙しいところ恐縮ですがご教示いただけますと幸いです。