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


Отображение Зон Заказа Выпадающим Списком

зоны заказа выпадающий список

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

#1 kuziomavladimir@yandex.ru

kuziomavladimir@yandex.ru

    Пользователь

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

Отправлено 11 Апрель 2018 - 13:39

Как изменить отображение зон заказа  выпадающим списком? Вопрос проиллюстрировал на скрине ниже

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

  • Untitlеееed-1.jpg


#2 Ирина345

Ирина345

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

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

Отправлено 12 Апрель 2018 - 13:41

 kuziomavladimir@yandex.ru (11 Апрель 2018 - 13:39) писал:

Как изменить отображение зон заказа  выпадающим списком? Вопрос проиллюстрировал на скрине ниже
Здравствуйте, извините за долгое ожидание ответа.
Найдите в шаблоне Быстрый заказ код
{% IFNOT order_delivery.zone_list_empty %}
					{% FOR zone_list %}
					  <div class="zones">
						  <!-- Заголовок внутри метода доставки, появляется только один раз--> 
						  {% IF order_delivery.zone_list.index=1 %}
							<label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br />
						  {% ENDIF %}
						  <input
							type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}"
							{% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}
							  checked="checked" rel="true"
							{% ENDIF %}
						  />
						  <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}">
							{order_delivery.zone_list.NAME}
							<span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
						  </label>
					  </div>
					{% ENDFOR %}
				  {% ENDIF %}
замените на
{% IFNOT order_delivery.zone_list_empty %}
				   <select   data-deliveryid="{order_delivery.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}>
												 {% FOR zone_list %}
												 <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}>
														 {order_delivery.zone_list.NAME}
												 </option>
												 {%ENDFOR%}
										 </select>
				  {% ENDIF %}
				  <div style="display:none;">
				  {% IFNOT order_delivery.zone_list_empty %}
					{% FOR zone_list %}
					  <div class="zones">
						  <!-- Заголовок внутри метода доставки, появляется только один раз--> 
						  {% IF order_delivery.zone_list.index=1 %}
							<label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br />
						  {% ENDIF %}
						  <input
							type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}"
							{% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}
							  checked="checked" rel="true"
							{% ENDIF %}
						  />
						  <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}">
							{order_delivery.zone_list.NAME}
							<span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
						  </label>
					  </div>
					{% ENDFOR %}
				  {% ENDIF %}
				  </div>
далее найдите в файле main.js код
  $(function(){  
	$('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){
	  $('.deliveryRadio,.deliveryZoneRadio').each(function(){
		$(this).removeAttr('checked');
	  })
	  var id = $(this).val()
		 ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]);		 
	  $(this).prop('checked',true);
	  fz.prop('checked',true);  
	  if($('.zones').length){ 
		price = fz.next().find('.num').text();
		oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num');
		if(price != ''){
		  oldPrice.text(price);
		}
	  }
	})
  });
после вставьте
$('.orderStageDeliveryListTable select').change(function(){
var value = $(this).find('option:selected').attr('data-price'), zone=$(this).find('option:selected').val();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .deliveryRadio').click();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .zones input[value="' + zone + '"]').trigger('click');
// ставим куки
});


#3 kuziomavladimir@yandex.ru

kuziomavladimir@yandex.ru

    Пользователь

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

Отправлено 12 Апрель 2018 - 15:25

 Ирина345 (12 Апрель 2018 - 13:41) писал:

Здравствуйте, извините за долгое ожидание ответа.
Найдите в шаблоне Быстрый заказ код
{% IFNOT order_delivery.zone_list_empty %}
				 {% FOR zone_list %}
					 <div class="zones">
						 <!-- Заголовок внутри метода доставки, появляется только один раз-->
						 {% IF order_delivery.zone_list.index=1 %}
						 <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br />
						 {% ENDIF %}
						 <input
						 type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}"
						 {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}
							 checked="checked" rel="true"
						 {% ENDIF %}
						 />
						 <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}">
						 {order_delivery.zone_list.NAME}
						 <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
						 </label>
					 </div>
				 {% ENDFOR %}
				 {% ENDIF %}
замените на
{% IFNOT order_delivery.zone_list_empty %}
				 <select data-deliveryid="{order_delivery.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}>
												 {% FOR zone_list %}
												 <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}>
														 {order_delivery.zone_list.NAME}
												 </option>
												 {%ENDFOR%}
										 </select>
				 {% ENDIF %}
				 <div style="display:none;">
				 {% IFNOT order_delivery.zone_list_empty %}
				 {% FOR zone_list %}
					 <div class="zones">
						 <!-- Заголовок внутри метода доставки, появляется только один раз-->
						 {% IF order_delivery.zone_list.index=1 %}
						 <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br />
						 {% ENDIF %}
						 <input
						 type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}"
						 {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}
							 checked="checked" rel="true"
						 {% ENDIF %}
						 />
						 <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}">
						 {order_delivery.zone_list.NAME}
						 <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
						 </label>
					 </div>
				 {% ENDFOR %}
				 {% ENDIF %}
				 </div>
далее найдите в файле main.js код
$(function(){
$('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){
	 $('.deliveryRadio,.deliveryZoneRadio').each(function(){
	 $(this).removeAttr('checked');
	 })
	 var id = $(this).val()
		 ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]);		
	 $(this).prop('checked',true);
	 fz.prop('checked',true);
	 if($('.zones').length){
	 price = fz.next().find('.num').text();
	 oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num');
	 if(price != ''){
		 oldPrice.text(price);
	 }
	 }
})
});
после вставьте
$('.orderStageDeliveryListTable select').change(function(){
var value = $(this).find('option:selected').attr('data-price'), zone=$(this).find('option:selected').val();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .deliveryRadio').click();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide();
$('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .zones input[value="' + zone + '"]').trigger('click');
// ставим куки
});

Большое спасибо, получилось, но теперь нужно, чтобы в карточке товара в условиях доставки тоже всё отображалось выпадающим списком

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

  • Un767titled-1.jpg


#4 Vaccina

Vaccina

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

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

Отправлено 13 Апрель 2018 - 02:51

Здравствуйте.

Зайдите в раздел Сайт - Редактор шаблонов - Товар - найдите:
{% IFNOT goods_delivery.zone_list_empty %}
			  {% FOR zone_list %}
				<h5>{goods_delivery.zone_list.NAME}</h5>
				{% IF goods_delivery.zone_list.rules_empty %}
				  <span>Стоимость доставки: <strong>{goods_delivery.zone_list.PRICE | money_format}</strong></span>
				{% ELSE %}
				  <h6>Стоимость доставки зависит от суммы заказа</h6>
				  {% FOR rules %}
					<div>Для заказов больше <strong>{goods_delivery.zone_list.rules.SUM_MORE_PRICE | money_format}</strong> - доставка <strong>{goods_delivery.zone_list.rules.PRICE | money_format}</strong></div>
				  {% ENDFOR %}
					<div>Для заказов меньше <strong>{goods_delivery.SUM_LESS_PRICE | money_format}</strong> - доставка <strong>{goods_delivery.zone_list.PRICE | money_format}</strong></div>
				{% ENDIF %}
			  {% ENDFOR %}
			{% ENDIF %}
            
            
замените на:
{% IFNOT goods_delivery.zone_list_empty %}
			  <div class="clear"></div><br/>
			  <select id="zone_del">
			  {% FOR zone_list %}
				<option value="Стоимость доставки: {goods_delivery.zone_list.PRICE} руб.">{goods_delivery.zone_list.NAME}</h5>
			  {% ENDFOR %}
			  </select>
			  <div id="zone_price">Стоимость доставки: 405 руб.</div>
			  <script>
			  $(document).ready(function() {
   			   $('#zone_del').change(function() {
   				 var zone_price = $(this).val();
   				 $('#zone_price').text(zone_price);;
   			   });
			  });
   			 </script>
			{% ENDIF %}


#5 kuziomavladimir@yandex.ru

kuziomavladimir@yandex.ru

    Пользователь

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

Отправлено 13 Апрель 2018 - 15:49

Большое спасибо!!!

#6 лиса

лиса

    Продвинутый пользователь

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

Отправлено 18 Ноябрь 2018 - 01:42

А мне хочется сделать немного иначе :rolleyes:
А именно: засунуть все зоны в скрытые блоки - спойлеры.. При выборе переключателя какого-либа типа доставки должен выпадать (отображаться) блок с зонами по этому типу доставки (в том виде, как по умолчанию - с радиопереключателями и указанием цен). При переключении на другой тип доставки, соответственно, его зоны отображаются, предыдущие скрываются.. ну, вы поняли)

Подскажите плз как реализовать?

#7 Vaccina

Vaccina

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

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

Отправлено 11 Январь 2019 - 03:11

Здравствуйте.

Ответили здесь:
https://forum.storel...ов/#entry280418

#8 лиса

лиса

    Продвинутый пользователь

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

Отправлено 12 Январь 2019 - 11:44

 Vaccina (11 Январь 2019 - 03:11) писал:

Здравствуйте.

Ответили здесь:
https://forum.storel...ов/#entry280418

Вообще не то получается ((((

 лиса (18 Ноябрь 2018 - 01:42) писал:

А мне хочется сделать немного иначе :rolleyes:
А именно: засунуть все зоны в скрытые блоки - спойлеры.. При выборе переключателя какого-либа типа доставки должен выпадать (отображаться) блок с зонами по этому типу доставки (в том виде, как по умолчанию - с радиопереключателями и указанием цен). При переключении на другой тип доставки, соответственно, его зоны отображаются, предыдущие скрываются.. ну, вы поняли)

Подскажите плз как реализовать?

Нужен не выпадающий список, а спойлер, при нажатии на который будет выпадать полный список адресов с переключателями.

#9 Vaccina

Vaccina

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

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

Отправлено 15 Январь 2019 - 06:46

Здравствуйте.

Ответила вам тут:
https://forum.storel..._40#entry280476

#10 Neana

Neana

    Новичок

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

Отправлено 17 Февраль 2020 - 12:09

Здравствуйте. Сделала как описано выше и вот, что получилось:
При выборе зоны доставки не меняется цена, так же зоны не учитываются в заказе. Т.е. в итоге они получились как красивые картинки - не больше.

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

  • 2020-02-17_12-00-57.png
  • 2020-02-17_12-01-30.png





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

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