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


Форма Быстрого Заказа В Шаблоне Мокко


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

#141 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 21 Октябрь 2014 - 12:27

Вопрос более не актуален.

Но возник другой вопрос. Если добавить в шаблон "Быстрый заказ" строчку
formData.push({name: 'form[delivery][comment]', value: 'Содержимое комментария'});
то при попытке быстро оформить заказ он не оформляется сразу (как до этого), а мы попадаем на последний шаг обычного оформления заказа с ошибкой "Ошибка при оформлении заказа. Не указан метод доставки".
Как это исправить?

#142 Ирина345

Ирина345

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

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

Отправлено 21 Октябрь 2014 - 14:29

Просмотр сообщенияpasiki (21 Октябрь 2014 - 12:27) писал:

Вопрос более не актуален.

Но возник другой вопрос. Если добавить в шаблон "Быстрый заказ" строчку
formData.push({name: 'form[delivery][comment]', value: 'Содержимое комментария'});
то при попытке быстро оформить заказ он не оформляется сразу (как до этого), а мы попадаем на последний шаг обычного оформления заказа с ошибкой "Ошибка при оформлении заказа. Не указан метод доставки".
Как это исправить?
Здравствуйте, уточните с какой целью Вы добавили данную строчку, и какой инструкцией пользовались.

#143 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 21 Октябрь 2014 - 15:09

См. поста 135 и 136 на предыдущей странице.
http://forum.storela...120#entry162480

#144 Сake

Сake

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

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

Отправлено 22 Октябрь 2014 - 03:34

Просмотр сообщенияpasiki (21 Октябрь 2014 - 12:27) писал:

Вопрос более не актуален.

Но возник другой вопрос. Если добавить в шаблон "Быстрый заказ" строчку
formData.push({name: 'form[delivery][comment]', value: 'Содержимое комментария'});
то при попытке быстро оформить заказ он не оформляется сразу (как до этого), а мы попадаем на последний шаг обычного оформления заказа с ошибкой "Ошибка при оформлении заказа. Не указан метод доставки".
Как это исправить?

Проблема в том, что у вас не передаются обязательные поля "Метод доставки" и "Метод оплаты". Вам необходимо было изначально скрыть возможность выбора методов доставки и оплаты вместо их полного удаления. Проблему можно решить аналогично предыдущему решению, путем добавления необходимых данных для передачи. Например ранее добавленную строку или вместо неё (если не добавляли)

formData.push({name: 'form[delivery][comment]', value: 'Содержимое комментария'});

вставить аналогичную строку, только с уже другими значениями

// Доставка курьером по Москве
formData.push({name: 'form[delivery][id]', value: '48482'});
// Оплата наличными
formData.push({name: 'form[payment][id]', value: '41608'});

тогда по умолчанию заказ будет оформляться с использованием метода доставки как "Доставка курьером по Москве" и методом оплаты как "Оплата наличными". Если же вам необходима возможность именно выбора способа доставки и оплаты в форме заказа, то вам понадобиться переустановить или дополнить ваш шаблон "Быстрый заказ" недостающим кодом (блоки вариантов доставки и оплаты).

#145 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 23 Октябрь 2014 - 13:44

Понятно, спасибо!
Выбор способа доставки и оплаты в форме быстрого заказа не нужен - специально убрал.

#146 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 23 Октябрь 2014 - 13:53

Но... Строки вставил, однако ошибка эта все равно вылезает.

#147 Сake

Сake

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

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

Отправлено 24 Октябрь 2014 - 05:49

Проблема в том что событие форму у вас не обрабатывается. Происходить это по всей вероятности из-за того, что событие добавляется слишком рано. Исправить проблему можно следующим образом - в шаблоне "Быстрый заказ" найдите код

<script type="text/javascript">
  $(document).ready(function(){
   
	var ID = $('input[name="form[delivery][id]"]:checked').val(); 
	$('.quick_order_payment').hide();
	$('.quick_order_payment[rel="' + ID + '"]').show();
	$('.quick_order_payment[rel="' + ID + '"]').find('input:first').attr('checked', true);
	 
	$('.deliveryRadio').click(function(){ 
	  var ID = $('input[name="form[delivery][id]"]:checked').val(); 
	  $('.quick_order_payment').hide();
	  $('.quick_order_payment[rel="' + ID + '"]').show();
	  $('.quick_order_payment[rel="' + ID + '"]').find('input:first').attr('checked', true);
	});
   
	// Форма регистрации нового пользователя, при оформлении заказа
	$('.OrderShowPass').click(function(){
	  ChangePasswordFieldType(this, $('#contactPassWord'));
	  return false;
	});
   
	// При оформлении заказа дадим возможность зарегистрироваться пользователю
	$('#contactWantRegister').click(function(){
	  if($(this).attr("checked")) {
		$('.contactRegisterNeedElement').show();
		$('#contactEmail, #contactPassWord').addClass('required');
	  } else {
		$('.contactRegisterNeedElement').hide();
		$('#contactEmail, #contactPassWord').removeClass('required');
	  }
	});
   
	 // Действия при выборе варианта доставки на этапе оформления заказа
	$('.deliveryRadio').click(function(){
	 
	  // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	  if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
		$('.deliveryZoneRadio:checked').click().attr('checked', false);
	  }
	});
   
	// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
	$('.deliveryZoneRadio').click(function(){
	 
	  var
		deliveryId = $(this).attr('deliveryid')
		,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
		,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
		,deliveryBlock = deliveryTbody.find('#quickDeliveryIdMain' + deliveryId)
		,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
		,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	  ;
 
	  // Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	  if('true' == $(this).attr('rel')) {
		$(this).attr('checked', false);
		$(this).attr('rel', 'false');
	   
		// Показываем цену по умолчанию
		deliveryDefaultPriceBlock.show();
		// Скрываем цену образованную от зоны
		deliveryZonePriceBlock.hide();
	   
	  // Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	  } else {
		$('.deliveryZoneRadio').attr('rel', 'false');
		$(this).attr('rel', 'true');
	   
		// Показываем цену по умолчанию
		deliveryDefaultPriceBlock.hide();
		// Скрываем цену образованную от зоны
		deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	   
		// Выделяем вариант доставки к которому относится зона доставки
		deliveryBlock.attr('checked', true).click();
	  }
	});
 
	// Валидация формы на странице оформления заказа
	$("#quickform").submit(function(){
	 
	  // Если форма невалидна не отправляем её на сервер
	  if(!$(this).valid()) {
		return false;
	  }
	 
	  // Получаем данные формы, которые будем отправлять на сервер
	  var formData = $(this).serializeArray();
	  // Сообщаем серверу, что мы пришли через ajax запрос
	  formData.push({name: 'ajax_q', value: 1});
	  // Доставка курьером по Москве
	  //formData.push({name: 'form[delivery][id]', value: '48482'});
	  // Добавление дополнительных данных (комментария)
	  //formData.push({name: 'form[delivery][comment]', value: 'БЫСТРЫЙ ЗАКАЗ'});
	  // Оплата наличными
	  //formData.push({name: 'form[payment][id]', value: '41608'});
 
	  // Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
	  $.ajax({
		type   : "POST",
		dataType: 'json',
	  cache   : false,
	  url	: $(this).attr('action'),
	  data  : formData,
	  success: function(data) {
		  // Если заказ был успешно создан
		  if( data.status == 'ok' ) {
			window.location = data.location;
		  } else if( data.status == 'error' ) {
			alert(data.message);
		  } else {
			alert('Во время оформления заказа возникла неизвестная ошибка. Пожалуйста, обратитесь в службу технической поддержки.');
		  }
	  }
	 });
	 
	  return false;	 
	}).validate();
   
	$("#quickDeliveryConvenientDate").datepicker({
	  dayNames	  : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	dayNamesMin	: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	closeText	  : 'Готово',
	currentText	: 'Сегодня' ,
	duration	  : '',
	monthNames	: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
	monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	yearRange	  : "-6:+6",
	dateFormat	: 'dd.mm.yy',
	minDate		 : new Date(),
	firstDay	  : 1
   });
  });
</script>

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

<script type="text/javascript">
  $(document).ready(function(){
setTimeout(function() {
	var ID = $('input[name="form[delivery][id]"]:checked').val(); 
	$('.quick_order_payment').hide();
	$('.quick_order_payment[rel="' + ID + '"]').show();
	$('.quick_order_payment[rel="' + ID + '"]').find('input:first').attr('checked', true);
	 
	$('.deliveryRadio').click(function(){ 
	  var ID = $('input[name="form[delivery][id]"]:checked').val(); 
	  $('.quick_order_payment').hide();
	  $('.quick_order_payment[rel="' + ID + '"]').show();
	  $('.quick_order_payment[rel="' + ID + '"]').find('input:first').attr('checked', true);
	});
   
	// Форма регистрации нового пользователя, при оформлении заказа
	$('.OrderShowPass').click(function(){
	  ChangePasswordFieldType(this, $('#contactPassWord'));
	  return false;
	});
   
	// При оформлении заказа дадим возможность зарегистрироваться пользователю
	$('#contactWantRegister').click(function(){
	  if($(this).attr("checked")) {
		$('.contactRegisterNeedElement').show();
		$('#contactEmail, #contactPassWord').addClass('required');
	  } else {
		$('.contactRegisterNeedElement').hide();
		$('#contactEmail, #contactPassWord').removeClass('required');
	  }
	});
   
	 // Действия при выборе варианта доставки на этапе оформления заказа
	$('.deliveryRadio').click(function(){
	 
	  // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	  if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
		$('.deliveryZoneRadio:checked').click().attr('checked', false);
	  }
	});
   
	// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
	$('.deliveryZoneRadio').click(function(){
	 
	  var
		deliveryId = $(this).attr('deliveryid')
		,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
		,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
		,deliveryBlock = deliveryTbody.find('#quickDeliveryIdMain' + deliveryId)
		,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
		,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	  ;
 
	  // Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	  if('true' == $(this).attr('rel')) {
		$(this).attr('checked', false);
		$(this).attr('rel', 'false');
	   
		// Показываем цену по умолчанию
		deliveryDefaultPriceBlock.show();
		// Скрываем цену образованную от зоны
		deliveryZonePriceBlock.hide();
	   
	  // Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	  } else {
		$('.deliveryZoneRadio').attr('rel', 'false');
		$(this).attr('rel', 'true');
	   
		// Показываем цену по умолчанию
		deliveryDefaultPriceBlock.hide();
		// Скрываем цену образованную от зоны
		deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	   
		// Выделяем вариант доставки к которому относится зона доставки
		deliveryBlock.attr('checked', true).click();
	  }
	});
 
	// Валидация формы на странице оформления заказа
	$("#quickform").submit(function(){
	 
	  // Если форма невалидна не отправляем её на сервер
	  if(!$(this).valid()) {
		return false;
	  }
	 
	  // Получаем данные формы, которые будем отправлять на сервер
	  var formData = $(this).serializeArray();
	  // Сообщаем серверу, что мы пришли через ajax запрос
	  formData.push({name: 'ajax_q', value: 1});
	  // Доставка курьером по Москве
	  formData.push({name: 'form[delivery][id]', value: '48482'});
	  // Добавление дополнительных данных (комментария)
	  formData.push({name: 'form[delivery][comment]', value: 'БЫСТРЫЙ ЗАКАЗ'});
	  // Оплата наличными
	  formData.push({name: 'form[payment][id]', value: '41608'});
 
	  // Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
	  $.ajax({
		type	: "POST",
		dataType: 'json',
				cache	 : false,
				url			   : $(this).attr('action'),
				data			: formData,
				success: function(data) {
		  // Если заказ был успешно создан
		  if( data.status == 'ok' ) {
			window.location = data.location;
		  } else if( data.status == 'error' ) {
			alert(data.message);
		  } else {
			alert('Во время оформления заказа возникла неизвестная ошибка. Пожалуйста, обратитесь в службу технической поддержки.');
		  }
				}
		});
	 
	  return false;	 
	}).validate();
   
	$("#quickDeliveryConvenientDate").datepicker({
	  dayNames			  : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
				dayNamesMin			   : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
				closeText				   : 'Готово',
				currentText			   : 'Сегодня' ,
				duration					: '',
				monthNames				: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
				monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
				yearRange				   : "-6:+6",
				dateFormat				: 'dd.mm.yy',
				minDate		 : new Date(),
				firstDay					: 1
		});
}, 600);
  });
</script>


#148 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 27 Октябрь 2014 - 13:15

Не... С этим кодом по нажатию кнопки "Оформить заказ" в форме быстрого заказа вообще ничего не происходит. Даже форма не скрывается.

#149 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 27 Октябрь 2014 - 13:22

Хм, все еще интереснее.
Вернул все обратно на старый код, однако все равно при быстром заказе переход идет на 4-й шаг заказа, а не на страницу уже оформленного заказа.
И вроде это не кэш, т.к. я проверил это и на другом компьютере.

Обновил из бэкапа шаблон - все равно не работает.
А раньше как-то работало долгое время.
Спасайте! :)

#150 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 27 Октябрь 2014 - 13:56

Исправил сам, все-таки добавив в форму невидимый блок выбора способа доставки.
Теперь быстрый заказ оформляется нормально.

Но при этом строчка
formData.push({name: 'form[delivery][comment]', value: 'БЫСТРЫЙ ЗАКАЗ'});
все равно не дает никакого эффекта.
Комментарий в заказе не появляется.

#151 Сake

Сake

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

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

Отправлено 28 Октябрь 2014 - 02:27

Просмотр сообщенияpasiki (27 Октябрь 2014 - 13:15) писал:

Не... С этим кодом по нажатию кнопки "Оформить заказ" в форме быстрого заказа вообще ничего не происходит. Даже форма не скрывается.

По идее все должно было работать корректно, так как с этим кодом был сформирован тестовый заказ в вашем магазине.

Просмотр сообщенияpasiki (27 Октябрь 2014 - 13:56) писал:

Исправил сам, все-таки добавив в форму невидимый блок выбора способа доставки.
Теперь быстрый заказ оформляется нормально.

Но при этом строчка
formData.push({name: 'form[delivery][comment]', value: 'БЫСТРЫЙ ЗАКАЗ'});
все равно не дает никакого эффекта.
Комментарий в заказе не появляется.

У вас не добавляется обработчик события отправки формы и форма отправляется в обычном виде, так как если бы не было кода javascript в шаблоне "Быстрый заказ". В ваш шаблон "Быстрый заказ" внесено изменение согласно ранее предложенному коду. Очистите кэш в вашем браузере перед проверкой. Создано 2 тестовых заказа, первый до изменений, а второй уже после внесения изменений.

#152 pasiki

pasiki

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

  • Пользователи
  • PipPipPipPip
  • 231 сообщений
  • ГородСанкт-Петербург

Отправлено 28 Октябрь 2014 - 12:53

А, да, очистка кэша помогла. Спасибо!

#153 Egik

Egik

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

  • Пользователи
  • PipPipPipPip
  • 659 сообщений
  • ГородМосква

Отправлено 05 Февраль 2015 - 01:16

Аккаунт SL-205650
Доброй ночи, помогите поправить, и еще не всегда кладется товар через форму быстрый заказ.
И под самовывозом поправить адрес чтобы писался в строчку

Прикрепленные изображения

  • Безымянный.png
  • Безымянный.png


#154 Vaccina

Vaccina

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

  • Модераторы
  • 24 353 сообщений

Отправлено 05 Февраль 2015 - 07:24

Выполните инструкцию из следующего сообщения http://forum.storela...__60#entry77393




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

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