Liquid、JavaScriptなどに関する質問
AJAXでカートattributeを更新しても元に戻る現象に悩まされています。
レスポンスデータでは正常に更新されているようですが、ページを遷移または更新すると元に戻ってしまいます。
原因は何でしょうか。何か仕様を見落としているのでしょうか。
詳しい方がおられましたらご教授いただけましたら幸いです。
/// 最初に格納したデータ(/cart/update.js)
{
"attributes":{"id":"100027"}
}
/// 更新したデータ(/cart/update.js)
{
"attributes":{"id":"100002"}
}
/// レスポンスデータ (/cart.js) ※ここではちゃんと更新されている
.....
"attributes": {
"id": "100002"
},
.....
/// 更新またはページを遷移してから取得したデータ(/cart.js) ※元に戻ってしまう
.....
"attributes": {
"id": "100027"
},
.....
<!-- Liquidの表示でも同様です。 -->
{{ cart.attributes.id}} //100002
解決済! ベストソリューションを見る。
成功
cart attributes については、下記で説明しておりますが、
https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-custo...
ここで書いているLiquidを使った方法も、カートで入力したのちに、購入へ進むのform submitで初めて反映されるので、別の遷移や再表示をしてしまうと前の入力はクリアされてしまうと思うので、挙動としては同じになるかと思います。
つまり、update.js で設定して、そのままチェックアウトに進めば反映されるかと思います。
(検証はしていないので、ご自身でご確認ください)
cart.attributesは、INPUTタグ等の入力項目ですので、Ajaxで非同期更新したとしてもサーバーに保存されることはないと思います。
方法としては、javascriptでcookieに値を保存しておき、cookie取得して表示するか、
APIを使ってMetafieldsを更新して表示するか、どちらにしても一時保存するアクションが必要かと思います。
ご回答ありがとうございます。
お返事が遅れてすみません。
下記のShopify公式リファレンスには「Update cart attributes」という項目がありますが、これは実質機能しないものでしょうか?
https://shopify.dev/docs/themes/ajax-api/reference/cart#update-cart-attributes
成功
cart attributes については、下記で説明しておりますが、
https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-custo...
ここで書いているLiquidを使った方法も、カートで入力したのちに、購入へ進むのform submitで初めて反映されるので、別の遷移や再表示をしてしまうと前の入力はクリアされてしまうと思うので、挙動としては同じになるかと思います。
つまり、update.js で設定して、そのままチェックアウトに進めば反映されるかと思います。
(検証はしていないので、ご自身でご確認ください)
ご回答ありがとうございます。
仕様自体がそのような仕様なんですね…。
Cookie等で対応しますm(_ _)m
Shopifyのチェックアウトは世界一コンバージョン率が高いチェックアウトです。2023年4月に実施された世界3大手マネジメントコンサルティング会社の共同調査によると、Sho...
By Minami_ Apr 11, 2024Shopifyのルーツ Shopifyは、スノーボードをオンラインで販売したいという夢を叶えるために2004年に誕生しました。当時は大企業だけがインターネットで販売す...
By JapanGuru Apr 7, 2024リエンゲージメントの自動化で売り上げ向上へ!素敵なオンラインストアを作成し、見込み顧客の携帯へ広告を直接に送信する、またはSNSなどで宣伝すると、お客様がストアに行き着...
By Mirai Mar 24, 2024