Отправка Товара В Корзину
#1
Отправлено 03 Октябрь 2013 - 15:55
На многих магазинах так используют
#2
Отправлено 03 Октябрь 2013 - 16:48
#3
Отправлено 04 Октябрь 2013 - 02:44
#5
Отправлено 05 Октябрь 2013 - 04:25
$(function() { $('form.goodsDataForm, form.goodsToCartFromCompareForm, form.goodsListForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.listing, .goodsDataMainImage, .goodsListItemImage').addClass('form-block-wrapper'); $(this).find('.listing img, .goodsDataMainImage img, .goodsListItemImage img').addClass('product-img'); $('form.ajaxForm').submit(function() { var formData = $(this).serializeArray(); formData.push({name: 'ajax_q', value: 1}); $.post($(this).attr('action'), formData, $.proxy(function(html) { $('#cartSum').html($(html).find('.newCartSum').html()); $('#cartCount').html($(html).find('.newCartCount').html()); var wrapper = $(this).closest('.form-block-wrapper').length ? $(this).closest('.form-block-wrapper') : $(this); var product_img = wrapper.find('.product-img'); var img = product_img.clone().appendTo($('body')); img.css({ position: "absolute", left: product_img.offset().left, top: product_img.offset().top, display: "block", zIndex: 999 }).animate({ width: 0, height: 0, left: $('#cartInfo').offset().left, top: $('#cartInfo').offset().top }, 800, 'linear', function() { $(this).remove(); }); }, this)); return(false); }); });
данный код необходимо вставить в конец файла main.js. Так же из этого файла необходимо удалить
// Добавление товара в корзину через ajax $('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').submit(function(){ $(this).nyroModalManual({ formIndicator: 'ajax_q', // Value added when a form is sent minWidth: 450, // Minimum width minHeight: 140, // Minimum height gallery: null // Gallery name if provided }); return false; });
#6
Отправлено 05 Октябрь 2013 - 10:57
#7
Отправлено 05 Октябрь 2013 - 19:07
Сake (05 Октябрь 2013 - 04:25) писал:
$(function() { $('form.goodsDataForm, form.goodsToCartFromCompareForm, form.goodsListForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.listing, .goodsDataMainImage, .goodsListItemImage').addClass('form-block-wrapper'); $(this).find('.listing img, .goodsDataMainImage img, .goodsListItemImage img').addClass('product-img'); $('form.ajaxForm').submit(function() { var formData = $(this).serializeArray(); formData.push({name: 'ajax_q', value: 1}); $.post($(this).attr('action'), formData, $.proxy(function(html) { $('#cartSum').html($(html).find('.newCartSum').html()); $('#cartCount').html($(html).find('.newCartCount').html()); var wrapper = $(this).closest('.form-block-wrapper').length ? $(this).closest('.form-block-wrapper') : $(this); var product_img = wrapper.find('.product-img'); var img = product_img.clone().appendTo($('body')); img.css({ position: "absolute", left: product_img.offset().left, top: product_img.offset().top, display: "block", zIndex: 999 }).animate({ width: 0, height: 0, left: $('#cartInfo').offset().left, top: $('#cartInfo').offset().top }, 800, 'linear', function() { $(this).remove(); }); }, this)); return(false); }); });
данный код необходимо вставить в конец файла main.js. Так же из этого файла необходимо удалить
// Добавление товара в корзину через ajax $('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').submit(function(){ $(this).nyroModalManual({ formIndicator: 'ajax_q', // Value added when a form is sent minWidth: 450, // Minimum width minHeight: 140, // Minimum height gallery: null // Gallery name if provided }); return false; });
#8
Отправлено 05 Октябрь 2013 - 20:06
#9
Отправлено 08 Октябрь 2013 - 06:12
sVs (05 Октябрь 2013 - 10:57) писал:
В шаблоне "Пластик" можно использовать следующий код
$(function() { $('form.goodsDataForm, form.goodsToCartFromCompareForm, form.goodsListForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.ulproduct, .fullimg, .tabproduct').addClass('form-block-wrapper'); $(this).find('.ulproduct img, .fullimg img, .tabproduct img').addClass('product-img'); $('form.ajaxForm').submit(function() { var formData = $(this).serializeArray(); formData.push({name: 'ajax_q', value: 1}); $.post($(this).attr('action'), formData, $.proxy(function(html) { $('div.cartInfo .cartSum').html($(html).find('.newCartSum').html()); $('#cartCount').html($(html).find('.newCartCount').html()); var wrapper = $(this).closest('.form-block-wrapper').length ? $(this).closest('.form-block-wrapper') : $(this); var product_img = wrapper.find('.product-img'); var img = product_img.clone().appendTo($('body')); img.css({ position: "absolute", left: product_img.offset().left, top: product_img.offset().top, display: "block", zIndex: 999 }).animate({ width: 0, height: 0, left: $('.cartInfo').offset().left, top: $('.cartInfo').offset().top }, 800, 'linear', function() { $(this).remove(); }); }, this)); return(false); }); });
punkkez (05 Октябрь 2013 - 19:07) писал:
В предложенном коде это уже реализовано. Это можно заметить обратив внимание на строку
$('#cartCount').html($(html).find('.newCartCount').html());
которая и обновляет количество товара. Так это работает в стандартном шаблоне. Вся проблема в том что у вас изменена структура корзины в шаблоне "HTML" и отсутствует идентификатор cartCount. Вам необходимо в шаблоне "HTML" найти ваш код корзины
<span id="cartSum"> {% IF cart_count_empty %} {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")} | <span>0</span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")} | {cart_sum.NOW | money_format}</span><br /> {% ENDFOR %} {% ENDIF %} </span>
и заменить его на
<span> {% IF cart_count_empty %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">0</span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">{cart_sum.NOW | money_format}</span><br /> {% ENDFOR %} {% ENDIF %} </span>
по идее это должно сработать корректно.
Slava (05 Октябрь 2013 - 20:06) писал:
В шаблоне "Вечность" можно использовать следующий код
$(function() { $('form.goodsListItemCatalogueAddToCartButton, form.goodsToCartFromCompareForm, form.goodsDataForm').each(function() { $(this).addClass('ajaxForm'); $(this).find('button[type="submit"]').removeAttr('onclick'); }); $(this).find('.items, .main-image').addClass('form-block-wrapper'); $(this).find('.items img, .main-image img').addClass('product-img'); $('form.ajaxForm').submit(function() { var formData = $(this).serializeArray(); formData.push({name: 'ajax_q', value: 1}); $.post($(this).attr('action'), formData, $.proxy(function(html) { $('.basket-info:first').html($(html).find('#newCartData').html()); var wrapper = $(this).closest('.form-block-wrapper').length ? $(this).closest('.form-block-wrapper') : $(this); if(!wrapper.find('.product-img').length) { wrapper = $('.form-block-wrapper'); } var product_img = wrapper.find('.product-img'); var img = product_img.clone().appendTo($('body')); img.css({ position: "absolute", left: product_img.offset().left, top: product_img.offset().top, display: "block", zIndex: 999 }).animate({ width: 0, height: 0, left: $('.basket-info a').offset().left, top: $('.basket-info a').offset().top }, 800, 'linear', function() { $(this).remove(); }); }, this)); return(false); }); });
#10
Отправлено 08 Октябрь 2013 - 14:26
Сake (08 Октябрь 2013 - 06:12) писал:
$('#cartCount').html($(html).find('.newCartCount').html());
которая и обновляет количество товара. Так это работает в стандартном шаблоне. Вся проблема в том что у вас изменена структура корзины в шаблоне "HTML" и отсутствует идентификатор cartCount. Вам необходимо в шаблоне "HTML" найти ваш код корзины
<span id="cartSum"> {% IF cart_count_empty %} {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")} | <span>0</span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")} | {cart_sum.NOW | money_format}</span><br /> {% ENDFOR %} {% ENDIF %} </span>
и заменить его на
<span> {% IF cart_count_empty %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">0</span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">{cart_sum.NOW | money_format}</span><br /> {% ENDFOR %} {% ENDIF %} </span>
по идее это должно сработать корректно.
#11
Отправлено 08 Октябрь 2013 - 21:10
#12
Отправлено 09 Октябрь 2013 - 02:55
punkkez (08 Октябрь 2013 - 14:26) писал:
В предыдущем сообщении я немного ошибся. Получилось 2 идентификатора cartSum. Замените код (ранее замененный)
<span> {% IF cart_count_empty %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">0</span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span id="cartSum"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum">{cart_sum.NOW | money_format}</span><br /> {% ENDFOR %} {% ENDIF %} </span>
на следующий
<span> {% IF cart_count_empty %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">0</span></span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">{cart_sum.NOW | money_format}</span></span><br /> {% ENDFOR %} {% ENDIF %} </span>
если и это не поможет, то не убирайте изменения. Возможно проблема кроется в чем-то еще.
sVs (08 Октябрь 2013 - 21:10) писал:
Попробуйте код
$('form.goodsDataForm, form.goodsToCartFromCompareForm, form.goodsListForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.ulproduct, .fullimg, .tabproduct').addClass('form-block-wrapper'); $(this).find('.ulproduct img, .fullimg img, .tabproduct img').addClass('product-img');
заменить на
$('form.goodsDataForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.fullimg').addClass('form-block-wrapper'); $(this).find('.fullimg img').addClass('product-img');
#13
Отправлено 09 Октябрь 2013 - 07:39
#14
Отправлено 10 Октябрь 2013 - 02:08
<span id="cartSum">
и замените её на
<span id="cartSum" class="cartSumN">
далее найдите
<span class="cartprice" id="cartSum">
и замените на
<span class="cartprice cartSumN" id="cartSum">
после в файле main.js найдите
$('#cartSum').html($(html).find('.newCartSum').html());
и замените на
$('.cartSumN').html($(html).find('.newCartSum').html());
#15
Отправлено 10 Октябрь 2013 - 08:27
нужно чтобы всегда писал именно количество товаров
#16
Отправлено 10 Октябрь 2013 - 09:33
punkkez (10 Октябрь 2013 - 08:27) писал:
нужно чтобы всегда писал именно количество товаров
Найдите код в шаблоне HTML -
<span> {% IF cart_count_empty %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">0</span></span> {CURRENCY_NAME} {% ELSE %} {% FOR cart_sum %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">{cart_sum.NOW | money_format}</span></span><br /> {% ENDFOR %} {% ENDIF %} </span>и замените на -
<span> {% IF cart_count_empty %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">0</span></span>товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")} {% ELSE %} {% FOR cart_sum %} <span id="cartCount"><span class="num"> {CART_COUNT_TOTAL} товар{CART_COUNT_TOTAL | gen_word_end("", "а", "ов")}</span></span> | <span id="cartSum"><span class="num">{cart_sum.NOW | money_format}</span></span><br /> {% ENDFOR %} {% ENDIF %} </span>
#17
Отправлено 10 Октябрь 2013 - 10:38
#19
Отправлено 10 Октябрь 2013 - 13:55
{% FOR cart_count %} {cart_count.COUNT}{cart_count.MEASURE_NAME}{% IFNOT cart_count.last %},{% ENDIF %} {% ENDFOR %}и замените на -
{% FOR cart_count %} {cart_count.COUNT} товар{cart_count.COUNT | gen_word_end("", "а", "ов")}{% IFNOT cart_count.last %},{% ENDIF %} {% ENDFOR %}
#20
Отправлено 12 Октябрь 2013 - 16:15
miyako (10 Октябрь 2013 - 13:55) писал:
$('form.goodsDataForm, form.goodsToCartFromCompareForm, form.goodsListForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.ulproduct, .fullimg, .tabproduct').addClass('form-block-wrapper'); $(this).find('.ulproduct img, .fullimg img, .tabproduct img').addClass('product-img');
заменить на
$('form.goodsDataForm').each(function() { $(this).addClass('ajaxForm'); }); $(this).find('.fullimg').addClass('form-block-wrapper'); $(this).find('.fullimg img').addClass('product-img');
При такой реализации на странице самого товара появляется и всплывающее окно, и картинка летит в корзину. как убрать оттуда окно?
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных