個数制限の実装方法につきまして

AI-generated summary

  • 主題: Shopifyで数量制限の実装方法。質問者は「追加を止める方法」と「カート内数量取得方法」を相談。
  • 提案: 制限に達したら「カートに追加」ボタンにdisabled属性を付与する、または非表示にする。数量セレクターにmax属性を併用する案も提示。
  • 取得方法: Shopify Ajax API(GET /{locale}/cart.js)でカート情報をJSON取得可能。提示されたJavaScriptのfetch例により、レスポンスのitemsから商品と数量を参照できる。
  • 技術補足: cart.jsは現在のカート状態を返すエンドポイントで、itemsに各ラインアイテムの数量などが含まれるため、対象商品の投入数の判定に利用できる。
  • 結果・今後: 質問者はコードでカート商品の取得に成功。disabled属性+max属性で数量制限、cart.jsで数量判定という方針で実装を進める意向。
  • 進捗状況: 具体実装はこれからで、追加の課題や未解決点は示されていない。現時点では解決に向けて収束。

いつもお世話になっております。

こちらの過去の質問を参考に個数制限を実装したいと考えています。

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

処理の流れはわかるのですが、勉強不足のため実際に書くべきコードがよくわかりません。

1.カートに追加する処理を止めるというのは、submitボタンにonclickイベントを記述し、

呼び出した関数内で商品が制限数を超えていたら、returnして処理を止めれば良いでしょうか?

2.数量制限商品がカートに何個投入されているかは、cartAPIを利用して取得するのでしょうか?

その場合のコードがよくわからず、教えていただけると大変助かります。

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

るん 様

はじめまして。

株式会社フルバランスのドウケと申します。

一案ですが、ご参考になれば幸いです。

1.カートに追加する処理を止めるというのは、submitボタンにonclickイベントを記述し、呼び出した関数内で商品が制限数を超えていたら、returnして処理を止めれば良いでしょうか?

→商品が制限数に達していれば、カート追加ボタンにdisabled属性を付与する or カート追加ボタンを非表示にする、というのはいかがでしょうか。

2.数量制限商品がカートに何個投入されているかは、cartAPIを利用して取得するのでしょうか?

→以下のURLに記載の「GET /{locale}/cart.js」でカート情報を取得できます。

https://shopify.dev/api/ajax/reference/cart#get-locale-cart-js

コードは以下をjsファイルに記述してみてためしてください。

(async() => {
    const response = await fetch('https://ご自身のshop名.myshopify.com/cart.js');
    const {items} = await response.json();
    // カート商品
    console.log(items)
})()

どうぞよろしくお願いいたします。

株式会社フルバランス

ドウケ様

ご回答ありがとうございます。

1.確かにボタンにdisabled属性をつけるのでも良いですね。

数量セレクターにmax属性を併用すれば、個数制限を実装できそうです。

試してみます。

2.コードを教えていただき、ありがとうございます。

リファレンスにAPIコールの例が載っていなかったため、よくわからなかったのですが、教えていただいたコードでカートの商品情報を取得できました。

こちらを使用すれば、カートの商品数量を取得できそうです。

こちらを使用して、実装してみようと思います。

ありがとうございました。