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


Ошибка В Форме Быстрый Заказ


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

#1 Ильяc

Ильяc

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

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

Отправлено 14 Май 2015 - 08:05

SL-251638
В карточке товара в форме "быстрый заказ" 5 раз подряд повторяется блок выбора способа оплаты. Как оставить один и убрать лишние?

#2 Vaccina

Vaccina

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

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

Отправлено 14 Май 2015 - 08:36

В шаблоне Быстрый заказ найдите:
<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);
		 }
});
// Валидация формы на странице оформления заказа
$("#quickform").submit(function(){
   
		 // Если форма невалидна не отправляем её на сервер
		 if(!$(this).valid()) {
		 return false;
		 }
   
		 // Получаем данные формы, которые будем отправлять на сервер
		 var formData = $(this).serializeArray();
		 // Сообщаем серверу, что мы пришли через ajax запрос
		 formData.push({name: 'ajax_q', value: 1});
		 // Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
		 $.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);
		 }
});
// Валидация формы на странице оформления заказа
$("#quickform").submit(function(){
	
		 // Если форма невалидна не отправляем её на сервер
		 if(!$(this).valid()) {
		 return false;
		 }
	
		 // Получаем данные формы, которые будем отправлять на сервер
		 var formData = $(this).serializeArray();
		 // Сообщаем серверу, что мы пришли через ajax запрос
		 formData.push({name: 'ajax_q', value: 1});
		 // Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
		 $.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
});
},800);
});
</script>


#3 Ильяc

Ильяc

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

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

Отправлено 14 Май 2015 - 08:57

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

#4 Vaccina

Vaccina

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

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

Отправлено 14 Май 2015 - 09:24

Может стоит вставить страницу корзины в начало шаблона Быстрый заказ?
В шаблоне Быстрый заказ найдите:
<form action="{ORDER_STAGE_CONFIRM_URL}" method="post" id="quickform">
<div style="padding:0 0.5em;">

перед ним вставьте:
<form action="{CART_URL}" method="post" class="cartForm">
	<div>
   
	  {% IF FORM_NOTICE %}<h5 class="{% IF FORM_NOTICE_IS_GOOD %}green{% ELSE %}errorMessage{% ENDIF %}">{FORM_NOTICE | nl2br}</h5>{% ENDIF %}
   
	  {% IF cart_items_empty %}
		<div class="cartFormEmpty">
		  <h3>Ваша корзина пуста</h3><br />
		  Предлагаем выбрать нужный Вам товар из <a href="{CATALOG_URL}">каталога</a>.
		</div>
	  {% ELSE %}
		  <div id="ms-errors"></div>
		  <input type="hidden" name="hash" value="{HASH}" />
		  <table class="cartFormTable">
			<thead class="cartFormThead">
			  <tr>
				<th colspan="2">Наименование</th>
				<th>Цена</th>
				<th>Общая сумма</th>
				<th>Удалить</th>
			  </tr>
			</thead>
			<tbody class="cartFormTbody">
			  <!-- Позиции заказа -->
			  {% FOR cart_items %}
				<tr>
				  <td class="cell1">
					<a href="{cart_items.GOODS_URL}"><img class="goods-image-icon" src="{% IF cart_items.GOODS_IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-icon.png{% ELSE %}{cart_items.GOODS_IMAGE_ICON}{% ENDIF %}"></a>
				  </td>
				  <td class="cell2">
					<a href="{cart_items.GOODS_URL}" class="cartFormTbodyHeader">
					  {cart_items.GOODS_NAME}
					  <!-- Если у товара есть отличительные свойства для модификации товара, допишем их к названию товара -->
					  {% IFNOT cart_items.distinctive_properties_empty %}<span>({% FOR distinctive_properties %}{cart_items.distinctive_properties.NAME}: {cart_items.distinctive_properties.VALUE}{% IFNOT cart_items.distinctive_properties.last %}, {% ENDIF %}{% ENDFOR %})</span>{% ENDIF %}
					</a>
					<!-- Путь к категории, из которой заказали товара -->
					<div class="cartFormTbodyNavigate">
					  <a href="http://{NET_DOMAIN}/">Главная</a>
						{% FOR catalog_path %}
							 &raquo; <a href="{cart_items.catalog_path.URL}" >{cart_items.catalog_path.NAME}</a>
						{% ENDFOR %}
					</div>
				  </td>
				  <td class="cell4 num">
					{cart_items.GOODS_MOD_PRICE_NOW | money_format}
				  </td>
				  <td class="cell5 num">
					{cart_items.ORDER_LINE_PRICE_NOW | money_format}
				  </td>
				  <td class="cell6">
					<a href="{cart_items.ORDER_LINE_DELETE_URL}"><img src="{ASSETS_IMAGES_PATH}cartDelete.png" /></a>
				  </td>
				</tr>
			  {% ENDFOR %}
			  <!-- Скидки, действующие на заказ -->
			  {% FOR cart_discount %}
				{% IF cart_discount.DISCOUNT_IS_ENABLED %}
				  <tr>
					<td class="cell1"></td>
					<td class="cell2">
					  <span class="cartFormTbodyHeader">
						{cart_discount.DISCOUNT_NAME}
					  </span>
					</td>
					<td class="cell4 num">
					  {cart_discount.END_PRICE | money_format}
					</td>
					<td class="cell5 num">
					  {cart_discount.END_PRICE | money_format}
					</td>
					<td class="cell6"></td>
				  </tr>
				{% ENDIF %}
			  {% ENDFOR %}
			</tbody>
			<tfoot class="cartFormTfoot">
			  <tr>
				<td colspan="2" class="cartFormTfootTruncate"></td>
				<td colspan="4" class="cartFormTfootSum">
				  <table class="cartFormTfootSumTable">
					<tr>
					  <td class="cell1">Итого:&nbsp;</td>
					  <td class="cell2">
						{% FOR cart_sum %}
						  {cart_sum.NOW_WITH_DISCOUNT | money_format}<br />
						{% ENDFOR %}
					  </td>
					</tr>
				  </table>
				</td>
			  </tr>
			</tfoot>
		  </table>
		 
	  {% ENDIF %}
	</div>
  </form>


#5 Ильяc

Ильяc

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

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

Отправлено 14 Май 2015 - 10:19

Не совсем то, что я хотел, но очень здорово получилось! Спасибо!

Я хотел следующее. Например я нажал на кнопку "Быстрый Заказ" и передумал, решил не заполнять эту форму, закрыл ее, но система уже добавила товар в корзину и его не видно там, на главной странице, нужно зайти в саму корзину и только тогда сможешь его увидеть. Если товар один в наличии, покупатель уже повторно не сможет добавить или купить его, из-за этого человек просто уйдет с сайта. Можно еще сделать оформление быстрого заказа не добавляя товар в корзину, если это возможно
555555.png




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

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