Перейти к содержимому


Ошибка


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 15 Ноябрь 2013 - 23:01

Я добавил кнопку купить в каталоге страниц http://al-ver.ru/catalog/Tufli При нажатии на нее всплывает ajax окно информируя о том что товар успешно добавлен. Но проблема в том что добавляет по 1 товару, то есть если я зайду в саму карточку товара и нажму купить то автоматически добавиться столько сколько указанно в характеристиках. Например указанно что количество пар в упаковку 10 и при нажатии на кнопку добавить в корзину добавляет 10 единиц товара, а если из каталога нажать купить то добавит 1 единицу. Как решить подскажите пожалуйста.

#2 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 16 Ноябрь 2013 - 01:14

Как я понимаю подобной обработкой занимается код в main.js

$(function() {
   if($('.goodsDataFormSubmitButton #quantity_wanted').length) {
		  var quantity = $('.goodsDataFormSubmitButton #quantity_wanted');
		  $('.goodsDataMainDeliveryBlock .goodsDataFeatures td').each(function() {
				 if($.trim($(this).text()) === 'Количество пар в коробке') {
						quantity.val(parseInt($.trim($(this).next().text())));
						return(false);
				 }
		  });
   }
})

который на данный момент у вас используется. В данном случае проблема связана с отличием формы в карточке товара и в каталоге. В каталоге отсутствует поле quantity_wanted. Форме (<form>) в свою очередь должен быть задан класс goodsDataFormSubmitButton. Так же должен использоваться вывод характеристик в каталоге, чтобы смогло сработать условие ($.trim($(this).text()) === 'Количество пар в коробке'). Так как у вас не выполняются все выше указанные действия - в корзину добавляется всего один товар. Если следовать по списку, то вам для начала необходимо добавить класс к форме, после поле quantity_wanted и в последствии характеристики. Чтобы характеристики не отображались - можно их обвернуть в блок с стилем display: none; Первые 2 пункта вы можете просто перенести или подсмотреть из шаблона "Товар". Последний же сможете найти на форуме. Подобный вопрос об отображении характеристик в каталоге - задавался не однократно.

#3 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 16 Ноябрь 2013 - 01:24

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

#4 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 16 Ноябрь 2013 - 14:44

Это надо решить как можно быстрее, а то приходят не корректные заказы. и приходиться отказывать. так ка мы продаем оптом. А заказывают по 1 единице товара.

#5 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 19 Ноябрь 2013 - 03:57

У вас на данный момент удалена кнопка покупки из каталога. Как я понимаю вопрос уже не актуален? Раньше ответить вам на ваш вопрос не мог, по причине выходных. Если же вопрос все еще актуален, то вам необходимо вернуть кнопки покупки в каталог товаров.

#6 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 19 Ноябрь 2013 - 07:29

Вопрос еще актуален. Кнопку убрал по причине не верных заказов. Если возможно, то нужен готовый вариант. Спасибо:)

#7 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 20 Ноябрь 2013 - 01:04

Вам необходимо вернуть код кнопки покупки обратно в каталог. Вы можете её просто скрыть, тогда кнопка не будет видна посетителям, но будет доступна в исходном коде. Это необходимо для точного сопоставления ваших стилей и визуального отображения кнопки с добавляемым кодом (в противном случае может понадобиться больше изменений). Скрыть код можно обвернув удаляемый блок кода в блок <span> например

<span style="display: none !important;">
  Код который вы ранее удалили.
</span>

Как сделаете данное изменение - напишите.

#8 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 20 Ноябрь 2013 - 01:20

Сделал

#9 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 21 Ноябрь 2013 - 02:51

Сделайте следующее - в шаблоне "Товары" найдите код

<span style="display: none !important;"> <form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{goods.MIN_PRICE_NOW_ID}" class="goodsListForm" style="margin-top: 10px;"> <input type="hidden" name="hash" value="{HASH}" /> <input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" /> <input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" /> <a class="readmore" onclick="$('#goodsListFormId{goods.MIN_PRICE_NOW_ID}').submit(); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Купить</a> </form></span>

и замените его на

<span>
   <form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" class="goodsListForm" style="margin-top: 10px;">
	  <span class="goodsDataMainModificationId" style="display: none;" rel="{goods.ID}">
		  <table cellpadding="0" cellspacing="0" width="100%" class="charactir-list">
			{% FOR goods_attr_list %}
			  <tr>
				<td class="fnt12b" width="50%">{goods.goods_attr_list.NAME}</td>
				<td>{goods.goods_attr_list.VALUE}</td>
			  </tr>
			{% ENDFOR %}
		  </table>
	  </span>
	  <input type="hidden" name="hash" value="{HASH}" />
   <input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" />
   <input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" />
   <input type="hidden" name="form[goods_mod_quantity]" class="quantity_wanted" maxlength="12" value="1" />
   <a class="readmore" onclick="$(this).closest('form').submit(); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Купить</a>
   </form>
</span>

после в файл main.js добавьте код

$(function() {
   if($('.goodsDataMainModificationId .quantity_wanted').length) {
		$('.goodsDataMainModificationId .charactir-list td').each(function() {
			if($.trim($(this).text()) === 'Количество пар в коробке') {
	   $(this).closest('.goodsDataMainModificationId').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
			}
		});
   }
});


#10 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 21 Ноябрь 2013 - 03:03

Просмотр сообщенияСake (21 Ноябрь 2013 - 02:51) писал:

Сделайте следующее - в шаблоне "Товары" найдите код

<span style="display: none !important;"> <form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{goods.MIN_PRICE_NOW_ID}" class="goodsListForm" style="margin-top: 10px;"> <input type="hidden" name="hash" value="{HASH}" /> <input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" /> <input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" /> <a class="readmore" onclick="$('#goodsListFormId{goods.MIN_PRICE_NOW_ID}').submit(); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Купить</a> </form></span>

и замените его на

<span>
<form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" class="goodsListForm" style="margin-top: 10px;">
	 <span class="goodsDataMainModificationId" style="display: none;" rel="{goods.ID}">
		 <table cellpadding="0" cellspacing="0" width="100%" class="charactir-list">
		 {% FOR goods_attr_list %}
			 <tr>
			 <td class="fnt12b" width="50%">{goods.goods_attr_list.NAME}</td>
			 <td>{goods.goods_attr_list.VALUE}</td>
			 </tr>
		 {% ENDFOR %}
		 </table>
	 </span>
	 <input type="hidden" name="hash" value="{HASH}" />
<input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" />
<input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" />
<input type="hidden" name="form[goods_mod_quantity]" class="quantity_wanted" maxlength="12" value="1" />
<a class="readmore" onclick="$(this).closest('form').submit(); return false;" href="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}?hash={HASH | url_amp}&amp;form%5Bgoods_from%5D={goods.GOODS_FROM}&amp;form%5Bgoods_mod_id%5D={goods.MIN_PRICE_NOW_ID}" title="Положить &laquo;{goods.NAME}&raquo; в корзину">Купить</a>
</form>
</span>

после в файл main.js добавьте код

$(function() {
if($('.goodsDataMainModificationId .quantity_wanted').length) {
	 $('.goodsDataMainModificationId .charactir-list td').each(function() {
		 if($.trim($(this).text()) === 'Количество пар в коробке') {
	 $(this).closest('.goodsDataMainModificationId').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
		 }
	 });
}
});
Не работает... :(

#11 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 21 Ноябрь 2013 - 03:56

Немного некорректно задал селектор. Замените код

$(function() {
if($('.goodsDataMainModificationId .quantity_wanted').length) {
		 $('.goodsDataMainModificationId .charactir-list td').each(function() {
				 if($.trim($(this).text()) === 'Количество пар в коробке') {
		 $(this).closest('.goodsDataMainModificationId').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
				 }
		 });
}
});

на следующий

$(function() {
  if($('.goodsListForm .quantity_wanted').length) {
	$('.goodsDataMainModificationId .charactir-list td').each(function() {
		if($.trim($(this).text()) === 'Количество в упаковке') {
		   $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
		}
	});
  }
});


#12 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 21 Ноябрь 2013 - 10:42

Опять не работает

#13 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 22 Ноябрь 2013 - 00:58

Попробуйте очистить кэш в вашем браузере, а так же убрать скрытие кнопки, так как на данный момент товар например в той же категории catalog/Tufli добавляется в корзину с учетом характеристики "Количество в упаковке".

#14 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 22 Ноябрь 2013 - 01:22

Да вы правы) очистка кэша помогла) Спасибо огромное вам!)

#15 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 06 Декабрь 2013 - 00:19

Есть проблемка( при нажатии на кнопку показать еще, перестает работать кнопка купить( вернее работает но не правильно( добавляет по 1 товару, и не всплывает аякс окно, а сразу переходит в корзину...

#16 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 06 Декабрь 2013 - 03:44

Попробуйте код в файле main.js

// Добавление товара в корзину через ajax
$('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').submit(function(){
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 420, // Minimum width
	  minHeight: 150, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });

заменить на

// Добавление товара в корзину через ajax
$('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').live('submit', function(){
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 420, // Minimum width
	  minHeight: 150, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });

далее найдите код

$(function() {
  if($('.goodsListForm .quantity_wanted').length) {
		$('.goodsDataMainModificationId .charactir-list td').each(function() {
				if($.trim($(this).text()) === 'Количество пар в коробке') {
				   $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
				}
		});
  }
});
$(function() {
  if($('.goodsListForm .quantity_wanted').length) {
		$('.goodsDataMainModificationId .charactir-list td').each(function() {
				if($.trim($(this).text()) === 'Количество в упаковке') {
				   $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
				}
		});
  }
});
$(function() {
  if($('.goodsListForm .quantity_wanted').length) {
		$('.goodsDataMainModificationId .charactir-list td').each(function() {
				if($.trim($(this).text()) === 'Количество сумок в упаковке') {
				   $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
				}
		});
  }
});

и замените его на

function goodsListFormQuantity() {
  if($('.goodsListForm .quantity_wanted').length) {
		$('.goodsDataMainModificationId .charactir-list td').each(function() {
		  var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
				if($.inArray($.trim($(this).text()), list) !== -1) {
				   $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
				}
		});
  }
}
$(function() {
  goodsListFormQuantity();
});

далее найдите

goodsListItemBlockSlide();

и замените на

goodsListItemBlockSlide();
goodsListFormQuantity();


#17 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 06 Декабрь 2013 - 03:55

Просмотр сообщенияСake (06 Декабрь 2013 - 03:44) писал:

Попробуйте код в файле main.js

// Добавление товара в корзину через ajax
$('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').submit(function(){
$(this).nyroModalManual({
	 formIndicator: 'ajax_q', // Value added when a form is sent
	 minWidth: 420, // Minimum width
	 minHeight: 150, // Minimum height
	 gallery: null // Gallery name if provided
});
return false;
});

заменить на

// Добавление товара в корзину через ajax
$('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').live('submit', function(){
$(this).nyroModalManual({
	 formIndicator: 'ajax_q', // Value added when a form is sent
	 minWidth: 420, // Minimum width
	 minHeight: 150, // Minimum height
	 gallery: null // Gallery name if provided
});
return false;
});

далее найдите код

$(function() {
if($('.goodsListForm .quantity_wanted').length) {
	 $('.goodsDataMainModificationId .charactir-list td').each(function() {
			 if($.trim($(this).text()) === 'Количество пар в коробке') {
				 $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
			 }
	 });
}
});
$(function() {
if($('.goodsListForm .quantity_wanted').length) {
	 $('.goodsDataMainModificationId .charactir-list td').each(function() {
			 if($.trim($(this).text()) === 'Количество в упаковке') {
				 $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
			 }
	 });
}
});
$(function() {
if($('.goodsListForm .quantity_wanted').length) {
	 $('.goodsDataMainModificationId .charactir-list td').each(function() {
			 if($.trim($(this).text()) === 'Количество сумок в упаковке') {
				 $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
			 }
	 });
}
});

и замените его на

function goodsListFormQuantity() {
if($('.goodsListForm .quantity_wanted').length) {
	 $('.goodsDataMainModificationId .charactir-list td').each(function() {
		 var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
			 if($.inArray($.trim($(this).text()), list) !== -1) {
				 $(this).closest('.goodsListForm').find('.quantity_wanted').val(parseInt($.trim($(this).next().text())));
			 }
	 });
}
}
$(function() {
goodsListFormQuantity();
});

далее найдите

goodsListItemBlockSlide();

и замените на

goodsListItemBlockSlide();
goodsListFormQuantity();
Не работает... осталось по по прежнему( кэш чистил...

#18 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 06 Декабрь 2013 - 05:43

Как я понимаю товар в корзину добавляется без перехода в корзину, а не работает добавление упаковки. Заметил что строка

goodsListItemBlockSlide();

встречается несколько раз и как раз вы произвели замену в не том месте. Найдите в main.js

$(function() {
  if($('.goodsListItemBlock .goods_images_list img').length) {
		 goodsListItemBlockSlide();
goodsListFormQuantity();
  }
});

и замените на

$(function() {
  if($('.goodsListItemBlock .goods_images_list img').length) {
		 goodsListItemBlockSlide();
  }
});

тут данная замена по сути не нужна. Далее найдите

$(nav).html($(html).find(nav).first().html());
goodsListItemBlockSlide();
scroll_prod = false;

и замените на

$(nav).html($(html).find(nav).first().html());
goodsListItemBlockSlide();
goodsListFormQuantity();
scroll_prod = false;

замена необходима была именно в данном участке кода.

#19 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 06 Декабрь 2013 - 10:33

Просмотр сообщенияСake (06 Декабрь 2013 - 05:43) писал:

Как я понимаю товар в корзину добавляется без перехода в корзину, а не работает добавление упаковки. Заметил что строка

goodsListItemBlockSlide();

встречается несколько раз и как раз вы произвели замену в не том месте. Найдите в main.js

$(function() {
if($('.goodsListItemBlock .goods_images_list img').length) {
		 goodsListItemBlockSlide();
goodsListFormQuantity();
}
});

и замените на

$(function() {
if($('.goodsListItemBlock .goods_images_list img').length) {
		 goodsListItemBlockSlide();
}
});

тут данная замена по сути не нужна. Далее найдите

$(nav).html($(html).find(nav).first().html());
goodsListItemBlockSlide();
scroll_prod = false;

и замените на

$(nav).html($(html).find(nav).first().html());
goodsListItemBlockSlide();
goodsListFormQuantity();
scroll_prod = false;

замена необходима была именно в данном участке кода.
Все!) Спасибо большое!) Все работает как надо!)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных