Liquid、JavaScriptなどに関する質問
お世話になっております。
カート画面のLiquid編集 数量が変更された場合の小計の取得について質問がございます。
テーマ:Debut
カート画面の小計をjavascriptにて、金額に10%を乗算した結果を表示しています。
小計は
<input type="hidden" data-cart-subtotal value="{{ cart.total_price | money_with_currency }}" />
することで、取得できるのですが、数量が変更された場合に動的に変更されずに初期表示のままの金額となります。
こちら数量の変更に動的に変更される小計を取得する方法はありますでしょうか?
shopify developer のcart-liquidも拝見しましたが、その辺りの記述がなく行き詰まっております。
お教えいただければ幸いです。
よろしくお願いいたします。
解決済! ベストソリューションを見る。
成功
数量が変更されるトリガーは各テーマがどのように実装しているかによるので、テーマのコード分析が必要です。
ブラウザの開発コンソールでの調査と、テーマのダウンロードとエディタでの検索などが必要になるかと思います。
大きく分けて、カートの数量を変更した時に、Shopifyに遷移して画面がリフレッシュされる動作であれば、Liquidで対応可能ですが、JavaScriptで遷移なしに行っている場合は、カートの数量変更が反映されるJavaScriptのイベントハンドラ(onchangeなど)を特定して、そこでAjax APIを呼ぶことになるかと思います。
Liquidは、Shopifyが画面全体をブラウザに送る前にShopify側で分析して結果をHTMLに反映して返すものなので、Shopifyへの遷移がないと値は更新されません。なので、カートの変更がJavaScriptで行われている場合は、反映されません。カートの更新や情報の取得をJSで行うには以下のAjax APIが使えるので、これを試してみてください。
https://shopify.dev/docs/themes/ajax-api
ご回答ありがとうございます。
カート更新のAPIについて承知しました。
もう1点質問がございます。
こちらのAPIを呼ぶタイミングは数量が変更された時になるかと存じますが、その数量が変更されたことはどのように監視すればよろしいでしょうか?
テーマ共通の監視できるLiquidの要素がございましたらご教授していただきたいです。
よろしくお願いいたします。
成功
数量が変更されるトリガーは各テーマがどのように実装しているかによるので、テーマのコード分析が必要です。
ブラウザの開発コンソールでの調査と、テーマのダウンロードとエディタでの検索などが必要になるかと思います。
大きく分けて、カートの数量を変更した時に、Shopifyに遷移して画面がリフレッシュされる動作であれば、Liquidで対応可能ですが、JavaScriptで遷移なしに行っている場合は、カートの数量変更が反映されるJavaScriptのイベントハンドラ(onchangeなど)を特定して、そこでAjax APIを呼ぶことになるかと思います。
早速のご回答ありがとうございます。
わかりました。コードを分析し数量や小計などを監視してする対応で進めようかと思います。
またこの辺りアプリのマニュアルなどでLiquidの編集箇所など記載しておく必要がありそうですね。
あとは、テーマに依存せず変更を取得する方法としてWebhookがあります。
https://shopify.dev/docs/admin-api/rest/reference/events/webhook
ただし、Webhookは送信が遅れたり、通信が途絶える可能性もあるのでリアルタイムにストアフロントを変更するには向かないと思います。
また、通知を受け取った後にテーマに反映させるのに追加の開発が必要かと思います。
(web socketなどをwebhookを受け取るサーバー側で実装してそことテーマを通信させるような仕組みを作る必要があります)
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 7, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 30, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024