Автор Тема: Как передать все параметры товара при перемещении в корзину  (Прочитано 66 раз)

02 Апрель 2018, 16:39:47
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день! Просмотрел уже весь интернет, так и ничего не нашел подходящего. Работает, но с костылями...
Имеется стандартный wishlist, добавляю кнопку в файл таким кодом

themes/your_template/modules/blockwishlist/views/templates/front/managewishlist.tpl
<a class="exclusive button ajax_add_to_cart_button add-to-cart-in-wl" href="{$link->getPageLink('cart', true, NULL, "qty={$product.quantity|intval}&amp;id_product={$product.id_product|intval}&amp;add")|escape:'html':'UTF-8'}" data-id-attribute="{$product.id_product_attribute}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{$product.quantity|intval}" title="{l s='Add to cart' mod='blockwishlist'}"><span>{l s='Add to cart' mod='blockwishlist'}</span></a>
Далее прописываю код в файле
themes/your_template/js/modules/blockcart/ajax-cart.js
событию .ajax_add_to_cart_button
$(document).off('click', '.ajax_add_to_cart_button').on('click', '.ajax_add_to_cart_button', function(e){
e.preventDefault();
var idProduct =  parseInt($(this).data('id-product'));
var idProductAttribute =  parseInt($(this).data('id-product-attribute'));
var minimalQuantity =  parseInt($(this).data('minimal_quantity'));
if ($(this).is('.add-to-cart-in-wl')) {
    quan = $(this).closest('.product_infos').find('.wishlist_product_detail input.form-control').val();
    if (quan != minimalQuantity)
        minimalQuantity = quan;
}
if (!minimalQuantity)
    minimalQuantity = 1;
if ($(this).prop('disabled') != 'disabled')
    ajaxCart.add(idProduct, idProductAttribute, false, this, minimalQuantity);
});

Кнопка добавляется. При нажатии на нее добавляется товар без проблем в корзину, даже количество сохраняется. НО вот комбинация товара добавляется стоковая. Подскажите, пожалуйста что не так? заранее спасибо!
02 Апрель 2018, 17:58:39
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33160
  • Репутация: +26762/-0
    • Просмотр профиля
Версия prestashop? Такое решение выкладывали для prestashop 1.6, для 1.7 не подходит.
02 Апрель 2018, 18:01:28
Ответ #2
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1.6.1.6 версия. Попробую поискать. Это в этом разделе?
02 Апрель 2018, 18:46:13
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 105649
  • Репутация: +39552/-0
    • Просмотр профиля
    • Webstudio UwK
data-id-attribute="{$product.id_product_attribute}"замените на
data-id-product-attribute="{$product.id_product_attribute}"
Cоздание интернет сайтов Webstudio UwK
03 Апрель 2018, 11:17:30
Ответ #4
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
data-id-attribute="{$product.id_product_attribute}"замените на
data-id-product-attribute="{$product.id_product_attribute}"


Спасибо заработало!!! Но теперь добавляет всегда только по одному товару, если в label указать даже 3,4,5 например.
Ставил значения minimalQuantity другое, не выходит... Может знаете как сделать? Спасибо!
03 Апрель 2018, 17:01:07
Ответ #5
  • Новичок
  • *
  • Сообщений: 5
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Кому понадобится сделал так - добавил в themes/your_template/js/modules/blockcart/ajax-cart.js такой код
$(document).off('click', '.ajax_add_to_cart_button').on('click', '.ajax_add_to_cart_button', function(e){
e.preventDefault();
var idProduct =  parseInt($(this).data('id-product'));
var idProductAttribute =  parseInt($(this).data('id-product-attribute'));
var minimalQuantity =  parseInt($(this).data('minimal_quantity'));
if ($(this).is('.add-to-cart-in-wl')) {
    quan = $(this).closest('.product_infos').find('.wishlist_product_detail input.form-control').val();
    if (quan != minimalQuantity)
        minimalQuantity = quan;
}
if (!minimalQuantity)
    minimalQuantity = 1;
if ($(this).prop('disabled') != 'disabled')
    ajaxCart.add(idProduct, idProductAttribute, false, this, minimalQuantity);
});
на событие .ajax_add_to_cart_button