#javascript #jquery #shopify
#javascript #jquery #Shopify
Вопрос:
Я написал некоторый код для своего магазина Shopify с помощью jQuery. Работа заключается в том, что, когда клиент придет в мой магазин, он увидит, что товар уже добавлен в корзину.
Код работает отлично, но проблема в том, что когда он нажимает кнопку удаления, чтобы удалить этот продукт, продукт не удаляется. На самом деле это удаление, но оно снова добавляется в корзину.
Есть ли какое-либо решение для этого? У меня есть идея, что если кто-то нажмет кнопку удаления, функция больше не будет запускаться. Пожалуйста, скажите мне, каким должен быть код?
Shopify = Shopify || {};
Shopify.cart = {{ cart | json }};
if (Shopify.cart !=='undefined' amp;amp; Shopify.cart.items.length === 0) {
jQuery.post('/cart/add.js', {
quantity: 1,
id: 36507787624610,
}).always(function(data){
window.location.reload();
})
}
Комментарии:
1. Вопрос в том, почему вы вообще автоматически добавляете что-либо в корзину?
2. Вы можете использовать сеанс или локальное хранилище, чтобы сохранить некоторый флаг, когда пользователь нажал кнопку удаления, и избежать добавления элемента в случае появления флага. Или еще лучше переосмыслите свою идею, потому что это звучит как плохой UX 😉
3. Повторяя приведенные выше комментарии: я верю, что на какой бы странице пользователь ни был, которая привела его на ваш сайт, он должным образом подготовил ожидания пользователей от товара, добавляемого в их корзину. Вам нужно посмотреть, как использовать файлы cookie. Допустим, вы используете переменную «ItemAdded», которую вы сохраняете как «TRUE» в cookie. Проверьте наличие «добавленного» cookie-файла и, если он не найден, добавьте товар в корзину, затем установите cookie-файл.
4. У вас есть скрипка или демонстрационная ссылка на вашу функциональность? почему функция всегда повторяется. вы говорите о кнопке остановки, но где находится кнопка добавления или удаления.
Ответ №1:
Я не знаю, какую тему вы используете, но это то, что вы можете сделать со своей темой. Я использовал тему debut.
Добавьте следующий атрибут данных в свой html-код кнопки удаления
item-id="{{ item.id }}"
После добавления приведенной выше строки в теме debut это будет выглядеть так.
<a href="/cart/change?line={{ forloop.index }}amp;amp;quantity=0" item-id="{{ item.id }}" class="text-link text-link--accent" aria-label="{{ 'cart.label.remove' | t: product: item.title }}" data-cart-remove>{{ 'cart.general.remove' | t }}</a>
Добавьте код JS в свою тему.jS-файл. (Измените идентификатор варианта в соответствии с вашим продуктом)
//Adding product in cart
$.getJSON('/cart.js',function( data ) {
$( data.items ).each(function( index, item ) {
//Replace the ID with your variantID
if(item.id == 30329455837287) {
localStorage.setItem("item_removed", "1");
}
});
});
$('a.text-link.text-link--accent').click(function(){
var variant_id = $(this).attr('item-id');
console.log(variant_id);
if(variant_id == 30329455837287){
localStorage.setItem("item_removed", "1");
}
});
setTimeout(function(){
if( localStorage.getItem("item_removed") == "0" || localStorage.getItem("item_removed") == null ) {
$.post('/cart/add.js', {
quantity: 1,
//Replace the ID with your variantID
id: 30329455837287
});
}
}, 500);
});
Комментарии:
1. Можете ли вы сказать мне, какую тему вы используете @mh_Pavel?