Выбор количества товара перед добавлением в корзину Simpla

Выбор количества товара перед добавлением в корзину Simpla

Сегодня я расскажу об очередной доработке cms Simpla. Речь пойдет о том, как добавить в карточку товара (или список товаров, а также рубрику) поле для ввода количество товара, перед его отправкой в корзину. По-умолчанию такого поля не предусмотрено, поэтому когда вы нажимаете на кнопку в корзину - товар в количестве одной штуки красиво улетает.

А что если нужно добавить 30 стульев? Или 10 мониторов? 10 раз нажимать на кнопку достаточно трудоемко, и не каждый человек догадается перейти в корзину, чтобы выбрать количество товара (хотя в корзине такая функция реализована). Сейчас мы постараемся сами сделать такую возможность: выбор количества товара перед добавлением в корзину.

Для начала хочу обратить внимание, что все изменения я делаю на Simpla 2.3.3. На разных версиях Simpla исходный код движка меняется. Будьте бдительны.

Тут все до ужаса просто. Идем на FTP, путь: design/ваша тема/js/ajax_cart.js. У меня файл выглядит так:

// Аяксовая корзина
$('form.variants').live('submit', function(e) {
	e.preventDefault();
	button = $(this).find('input[type="submit"]');
	if($(this).find('input[name=variant]:checked').size()>0)
		variant = $(this).find('input[name=variant]:checked').val();
	if($(this).find('select[name=variant]').size()>0)
		variant = $(this).find('select').val();
	$.ajax({
		url: "ajax/cart.php",
		data: {variant: variant},
		dataType: 'json',
		success: function(data){
			$('#cart_informer').html(data);
			if(button.attr('data-result-text'))
				button.val(button.attr('data-result-text'));
		}
	});
	var o1 = $(this).offset();
	var o2 = $('#cart_informer').offset();
	var dx = o1.left - o2.left;
	var dy = o1.top - o2.top;
	var distance = Math.sqrt(dx * dx + dy * dy);
	$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);	
	$('.transfer_class').html($(this).closest('.product').find('.image').html());
	$('.transfer_class').find('img').css('height', '100%');
	return false;
});
 
 
/*
// Аяксовая корзина
$('a[href*="cart?variant"]').live('click', function(e) {
	e.preventDefault();
	//variant_id = $(this).attr('id');
 
	href = $(this).attr('href');
	pattern = /\/?cart\?variant=(\d+)$/;
	variant_id = pattern.exec(href)[1];
 
	link = $(this);
	$.ajax({
		url: "ajax/cart.php",
		data: {variant: variant_id},
		dataType: 'json',
		success: function(data){
			$('#cart_informer').html(data);
			//if(link.attr('added_text'))
			//	link.html(link.attr('added_text'));
			//link.attr('href', '/cart');
		}
	});
 
	var o1 = $(this).offset();
	var o2 = $('#cart_informer').offset();
	var dx = o1.left - o2.left;
	var dy = o1.top - o2.top;
	var distance = Math.sqrt(dx * dx + dy * dy);
 
	$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);	
	$('.transfer_class').html($(this).closest('.product').find('.image').html());
	$('.transfer_class').find('img').css('height', '100%');
	return false;
});
*/

Теперь меняем строчку (11 сверху):

data: {variant: variant},

На:

data: {variant: variant,amount: $(this).find('input[name="amount"]').val()},

Здесь закончили. Идем в админку сайта, открываем шаблоны нашей темы и в нужное место карточки товара (product.tpl) или списка товаров (products.tpl) вставляем:

<input type="text" name="amount" value="5">

Вот и все) Теперь появится поле для ввода значения нужного количества товара. Не забудьте стилизовать его:) Всем успехов.

26.03.17
Для просмотра сайта обновите браузер.