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


Вставка Виджетов


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

#41 лиса

лиса

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

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

Отправлено 16 Декабрь 2018 - 15:15

УРА УРА УРА)) :lol: свершилось чудо из чудес - в грастине обновили свой виджет и теперь он отдает параметры в консоль.
Пожалуйста, помогите, скорей разобраться с подстановками!

У меня виджет располагается в корзине - это самое ближайшее к оформлению заказа место, куда я смогла его приткнуть, чтобы покупатели его видели, т.к. в теле ajax оформления оно не работало.. Надеюсь, не будет проблем с глобализацией переменных для подставления в поля заказа?

Напоминаю, данные приходят в функцию window.grastinPvzWidgetCallback вот в таком виде (на примере первого попавшегося пвз): {"deliveryType":"pvz","partnerId":"boxberry","currentId":"7a9ab22c-a271-11e8-a532-0050569b6f79","pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"},"cityTo":"ПЕНЗА","cityFrom":"МОСКВА","cost":287,"weight":1000,"assessed":0,"ko":0}

Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287

И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика :D  ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать :rolleyes:

#42 Ирина345

Ирина345

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

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

Отправлено 18 Декабрь 2018 - 15:46

Просмотр сообщениялиса (16 Декабрь 2018 - 15:15) писал:

УРА УРА УРА)) :lol: свершилось чудо из чудес - в грастине обновили свой виджет и теперь он отдает параметры в консоль.
Пожалуйста, помогите, скорей разобраться с подстановками!

У меня виджет располагается в корзине - это самое ближайшее к оформлению заказа место, куда я смогла его приткнуть, чтобы покупатели его видели, т.к. в теле ajax оформления оно не работало.. Надеюсь, не будет проблем с глобализацией переменных для подставления в поля заказа?

Напоминаю, данные приходят в функцию window.grastinPvzWidgetCallback вот в таком виде (на примере первого попавшегося пвз): {"deliveryType":"pvz","partnerId":"boxberry","currentId":"7a9ab22c-a271-11e8-a532-0050569b6f79","pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"},"cityTo":"ПЕНЗА","cityFrom":"МОСКВА","cost":287,"weight":1000,"assessed":0,"ko":0}

Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287

И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика :D  ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать :rolleyes:
Здравствуйте,  передавать стоимость пункта выдачи, можно только в виде текстовой информации и цену доставки менять нельзя, она формируется в разделе Настройки-Доставка и не меняется.
Уточните, при клике на что должен появляться виджет грастин.

#43 лиса

лиса

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

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

Отправлено 18 Декабрь 2018 - 23:29

Просмотр сообщенияИрина345 (18 Декабрь 2018 - 15:46) писал:


Здравствуйте,  передавать стоимость пункта выдачи, можно только в виде текстовой информации и цену доставки менять нельзя, она формируется в разделе Настройки-Доставка и не меняется.
Уточните, при клике на что должен появляться виджет грастин.

Да ему не нужно, собственно, появляться) Он уже, как я говорила выше, приткнут в самом ближайшем по логике месте, где ему технически позволено отображаться - в корзине, что визуально находится на одной странице с оформлением заказа.
Ну, ход мысли такой - покупатель, попадая в корзину, сначала тыкает на виджете в желаемый пункт выдачи, потом жмёт кнопку оформить заказ. Открывается форма оформления заказа, где уже подставлена в поля город и адрес инфа, пришедшая из функции виджета. Как-то так..

Относительно цены это прям печальная печаль, я чуть не плачу ((( Но, раз такие дела, тогда помогите хотя бы реализовать такой вариант:
https://forum.storel...дающим-списком/

#44 Vaccina

Vaccina

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

  • Модераторы
  • 23 127 сообщений

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

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

Зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
				{% 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"><b>Выберите:</b></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}">
							<span class="zone_list">{order_delivery.zone_list.NAME}</span>
							<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 quickOrderScripts(){
$(document).ready(function(){

после него вставьте:
$('.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');
});   


#45 лиса

лиса

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

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

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

Вакцина, спасибо за ответ!

А как насчёт этого?

Просмотр сообщениялиса (16 Декабрь 2018 - 15:15) писал:

Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287

И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика :D  ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать :rolleyes:
без цены, конечно ((

#46 лиса

лиса

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

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

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

Просмотр сообщенияVaccina (11 Январь 2019 - 03:11) писал:

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

Зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
			 {% 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"><b>Выберите:</b></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}">
						 <span class="zone_list">{order_delivery.zone_list.NAME}</span>
						 <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 quickOrderScripts(){
$(document).ready(function(){

после него вставьте:
$('.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');
}); 

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

#47 Vaccina

Vaccina

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

  • Модераторы
  • 23 127 сообщений

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

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

Поняла вас =) В этом случае отмените изменения по моей последней инструкции, зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
										{% FOR zone_list %}
										  <div class="zones">
												  <!-- Заголовок внутри метода доставки, появляется только один раз--> 
												  {% IF order_delivery.zone_list.index=1 %}
														<label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></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}">
														<span class="zone_list">{order_delivery.zone_list.NAME}</span>
														<span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
												  </label>
										  </div>
										{% ENDFOR %}
                                      
замените:
								 {% IFNOT order_delivery.zone_list_empty %}
									<div class="zone_block">
									  <!-- Заголовок внутри метода доставки, появляется только один раз--> 
									  <a class="zones-header"><b>Выберите зону доставки</b></a><br />
									  <div class="zone_list">
										{% FOR zone_list %}
										  <div class="zones">
												  <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}">
														<span class="zone_list">{order_delivery.zone_list.NAME}</span>
														<span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
												  </label>
										  </div>
										{% ENDFOR %}
									  </div>
									</div>
								  {% ENDIF %}
                                
далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа
function quickOrderScripts(){
$(document).ready(function(){

после него вставьте:
  $('.zone_block .zone_list').hide();
  $('.zone_block .zones-header').click(function(){
	$('.zone_block .zone_list').hide();
	$(this).closest('.zone_block').find('.zone_list').toggle('slow');
	return false;
  });

Просмотр сообщениялиса (16 Декабрь 2018 - 15:15) писал:

Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287

И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика :D  ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать :rolleyes:


Цену вставить в стоимость доставки не получится, ее можно добавить только в поля для заполнения, например, комментарий, устроит вас данный вариант?

#48 лиса

лиса

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

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

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

Просмотр сообщенияVaccina (15 Январь 2019 - 06:45) писал:

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

Поняла вас =) В этом случае отмените изменения по моей последней инструкции, зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
									 {% FOR zone_list %}
										 <div class="zones">
												 <!-- Заголовок внутри метода доставки, появляется только один раз-->
												 {% IF order_delivery.zone_list.index=1 %}
													 <label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></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}">
													 <span class="zone_list">{order_delivery.zone_list.NAME}</span>
													 <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
												 </label>
										 </div>
									 {% ENDFOR %}
  
замените:
								 {% IFNOT order_delivery.zone_list_empty %}
								 <div class="zone_block">
									 <!-- Заголовок внутри метода доставки, появляется только один раз-->
									 <a class="zones-header"><b>Выберите зону доставки</b></a><br />
									 <div class="zone_list">
									 {% FOR zone_list %}
										 <div class="zones">
												 <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}">
													 <span class="zone_list">{order_delivery.zone_list.NAME}</span>
													 <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span>
												 </label>
										 </div>
									 {% ENDFOR %}
									 </div>
								 </div>
								 {% ENDIF %}

далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа
function quickOrderScripts(){
$(document).ready(function(){

после него вставьте:
 $('.zone_block .zone_list').hide();
$('.zone_block .zones-header').click(function(){
$('.zone_block .zone_list').hide();
$(this).closest('.zone_block').find('.zone_list').toggle('slow');
return false;
});

Получилось! Спасибо большое!)
Хотя, боюсь, не все покупатели смогут додуматься нажать на надпись выбора зоны.. Возможно сделать, чтобы список раскрывался при выборе переключателя типа доставки?

Цитата

Цену вставить в стоимость доставки не получится, ее можно добавить только в поля для заполнения, например, комментарий, устроит вас данный вариант?

Давайте реализуем остальные параметры, без цены.
Спасибо!




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

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