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


Как Развернуть Способ Доставки На Странице Оформления Заказа


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

#1 Serg83

Serg83

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

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

Отправлено 02 Октябрь 2013 - 11:08

добрый день.
помогите развернуть способ доставки на странице оформления заказа.
развернуть нужно только 1 способ доставки, а именно "Доставка курьером по москве/Спб".

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

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

p.s. хотелось бы услышать оба варианта решения проблемы, чтобы протестировать и выбрать оптимальный

#2 miyako

miyako

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

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

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

Просмотр сообщенияSerg83 (02 Октябрь 2013 - 11:08) писал:

добрый день.
помогите развернуть способ доставки на странице оформления заказа.
развернуть нужно только 1 способ доставки, а именно "Доставка курьером по москве/Спб".

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

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

p.s. хотелось бы услышать оба варианта решения проблемы, чтобы протестировать и выбрать оптимальный

Найдите код в шаблоне Оформления заказа -
{% IFNOT order_delivery.zone_list_empty %}
					{% FOR zone_list %}
					<tr>
и замените на -
{% IFNOT order_delivery.zone_list_empty %}
					{% FOR zone_list %}
					<tr  {% IF order_delivery.zone_list.NAME =  Санкт-Петербург ||  order_delivery.zone_list.NAME =  Москва %} style="display:block !important;" {%ENDIF%} >


#3 Serg83

Serg83

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

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

Отправлено 02 Октябрь 2013 - 12:37

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

Найдите код в шаблоне Оформления заказа -
{% IFNOT order_delivery.zone_list_empty %}
				 {% FOR zone_list %}
				 <tr>
и замените на -
{% IFNOT order_delivery.zone_list_empty %}
				 {% FOR zone_list %}
				 <tr {% IF order_delivery.zone_list.NAME = Санкт-Петербург || order_delivery.zone_list.NAME = Москва %} style="display:block !important;" {%ENDIF%} >

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

еще теперь при разворачивании этого он стал выглядеть крайне плохо - описание зон в столбик в 3-4 строки....

и сразу еще вопрос - как сделать так, чтобы при выборе нового способа доставки (перестановке галочек), предыдущие сворачивались? а  то, если снабдить зонами все способы доставки и клиент решить их почитать, страница превращается в длинное полотно...

#4 miyako

miyako

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

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

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

Просмотр сообщенияSerg83 (02 Октябрь 2013 - 12:37) писал:

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

еще теперь при разворачивании этого он стал выглядеть крайне плохо - описание зон в столбик в 3-4 строки....

и сразу еще вопрос - как сделать так, чтобы при выборе нового способа доставки (перестановке галочек), предыдущие сворачивались? а  то, если снабдить зонами все способы доставки и клиент решить их почитать, страница превращается в длинное полотно...
Код -
{% IFNOT order_delivery.zone_list_empty %}
								 {% FOR zone_list %}
								 <tr {% IF order_delivery.zone_list.NAME = Санкт-Петербург || order_delivery.zone_list.NAME = Москва %} style="display:block !important;" {%ENDIF%} >
замените на  -
{% IFNOT order_delivery.zone_list_empty %}
								 {% FOR zone_list %}
								 <tr {% IF order_delivery.zone_list.NAME = Санкт-Петербург || order_delivery.zone_list.NAME = Москва %} style="display:table-row !important;" {%ENDIF%} >


#5 Serg83

Serg83

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

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

Отправлено 03 Октябрь 2013 - 11:23

Просмотр сообщенияmiyako (02 Октябрь 2013 - 14:01) писал:

Код -
{% IFNOT order_delivery.zone_list_empty %}
								 {% FOR zone_list %}
								 <tr {% IF order_delivery.zone_list.NAME = Санкт-Петербург || order_delivery.zone_list.NAME = Москва %} style="display:block !important;" {%ENDIF%} >
замените на  -
{% IFNOT order_delivery.zone_list_empty %}
								 {% FOR zone_list %}
								 <tr {% IF order_delivery.zone_list.NAME = Санкт-Петербург || order_delivery.zone_list.NAME = Москва %} style="display:table-row !important;" {%ENDIF%} >
в столбик отображение пропало, но больше ничего не изменилось...
галочка стоит на первом пункте и он свернут.

еще бы хотелось, чтобы открытые пункты доставки сворачивались, при выборе нового

#6 Сake

Сake

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

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

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

Найдите в файле main.js код

$('.deliveryRadio').click(function() {
$(this).closest('tbody').find('tr').show();
});

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

$('.deliveryRadio').click(function() {
$('.deliveryRadio').closest('tbody').find('tr').hide();
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');


#7 Serg83

Serg83

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

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

Отправлено 04 Октябрь 2013 - 10:03

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

Найдите в файле main.js код

$('.deliveryRadio').click(function() {
$(this).closest('tbody').find('tr').show();
});

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

$('.deliveryRadio').click(function() {
$('.deliveryRadio').closest('tbody').find('tr').hide();
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');

заменил, но ничего не изменилось

#8 Сake

Сake

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

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

Отправлено 05 Октябрь 2013 - 00:30

У вас отсутствуют изменения в файле main.js. Пожалуйста, выполните изменения и не убирайте их. Возможно проблема была в кэше. Попробуйте после внесения изменений очистить кэш в браузере.

#9 Serg83

Serg83

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

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

Отправлено 08 Октябрь 2013 - 10:02

SOS!
после указанных выше модернизаций способ доставки остался 1....


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

видимо поэтому и пришлось убрать все предложенные изменения

#10 Сake

Сake

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

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

Отправлено 09 Октябрь 2013 - 01:28

Понимаю в чем проблема. У вас отличается структура элементов, поэтому код ранее вам не подходит. Используйте следующий код - в файле main.js найдите

/* !PickPoint--*/
$(function() {
$('.deliveryZoneRadio').closest('tr').hide();
$('.deliveryRadio').click(function() {
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');

и замените на

/* !PickPoint--*/
$(function() {
$('.deliveryZoneRadio').closest('tr').hide();
$('.deliveryRadio').click(function() {
$('.orderStageDeliveryListTable > tbody').each(function() {
  $(this).find('tr:not(:eq(0), :eq(1))').hide();
});
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');


#11 Serg83

Serg83

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

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

Отправлено 09 Октябрь 2013 - 09:59

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

код заменил, посмотрим изменится ли что-то после чистки кеша

#12 Сake

Сake

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

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

Отправлено 10 Октябрь 2013 - 01:13

Данный код будет сворачивать зоны доставки у не выбранных пунктов доставки. У выбранного же пункта наоборот зоны доставки будут разворачиваться.

Цитата

чтобы открытые пункты доставки сворачивались, при выборе нового

Это по сути именно то что вы и хотели.

#13 Serg83

Serg83

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

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

Отправлено 10 Октябрь 2013 - 08:59

Просмотр сообщенияСake (10 Октябрь 2013 - 01:13) писал:

Данный код будет сворачивать зоны доставки у не выбранных пунктов доставки. У выбранного же пункта наоборот зоны доставки будут разворачиваться.



Это по сути именно то что вы и хотели.

спасибо! теперь работает

#14 luzikov

luzikov

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

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

Отправлено 15 Август 2014 - 11:09

У меня та же проблема, и тоже нужно реализовать сворачивание и разворачивание пунктов, но ни один код из тех что вы тут написали я не нашел! http://m37840.storeland.ru/

#15 Vaccina

Vaccina

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

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

Отправлено 16 Август 2014 - 00:18

В шаблоне Быстрое оформление заказа найдите:
{% FOR zone_list %}
									 <!-- Заголовок внутри метода доставки, появляется только один раз-->
										 {% IF order_delivery.zone_list.index=1 %}
											 <tr>
												 <td></td>
												 <td>
													 <label for="deliveryId{order_delivery.ID}">
														 <p class="fnt12b">
														 <i>Выберите костюм:</i>
														 </p>
													 </label>
												 </td>
												 <td></td>
											 </tr>
										 {% ENDIF %}
									 <tr>
										 <td></td>
										 <td>
											 <input
												 type="radio"
												 class="deliveryZoneRadio"
												 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 for="deliveryZoneId{order_delivery.zone_list.ID}">
												 {order_delivery.zone_list.NAME}
											 </label>
										 </td>
										 <td width="18%">
											 <label for="deliveryZoneId{order_delivery.zone_list.ID}">
												 <span class="deliveryZonePrice">
												 <b>+ {order_delivery.zone_list.END_PRICE | money_format}</b>
												 </span>
											 </label>
										 </td>
									 </tr>
								 {% ENDFOR zone_list %}
замените на:
{% FOR zone_list %}
		 <tr class="zones">
			 <td></td>
			 <td>
			 <!-- Заголовок внутри метода доставки, появляется только один раз-->
			 {% IF order_delivery.zone_list.index=1 %}
				 <label for="quickDeliveryIdMain{order_delivery.ID}" class="zones-header">Зоны доставки</label>
			 {% ENDIF %}
			 <input
				 type="radio" class="deliveryZoneRadio" deliveryid="{order_delivery.ID}" id="quickDeliveryZoneId{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="quickDeliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;">
				 {order_delivery.zone_list.NAME}
				 <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span>
			 </label>
			 </td>
			 <td></td>
		 </tr>
		 {% ENDFOR %}

далее в конце main.js пропишите:
/* !PickPoint--*/
$(function() {
$('.zones').hide();
$('.deliveryRadio').click(function() {
$('.orderStageDeliveryListTable > tbody').each(function() {
$(this).find('tr:not(:eq(0), :eq(1))').hide();
});
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');
});


#16 luzikov

luzikov

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

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

Отправлено 18 Август 2014 - 12:45

Просмотр сообщенияVaccina (16 Август 2014 - 00:18) писал:

В шаблоне Быстрое оформление заказа найдите:
{% FOR zone_list %}
									 <!-- Заголовок внутри метода доставки, появляется только один раз-->
										 {% IF order_delivery.zone_list.index=1 %}
											 <tr>
												 <td></td>
												 <td>
													 <label for="deliveryId{order_delivery.ID}">
														 <p class="fnt12b">
														 <i>Выберите костюм:</i>
														 </p>
													 </label>
												 </td>
												 <td></td>
											 </tr>
										 {% ENDIF %}
									 <tr>
										 <td></td>
										 <td>
											 <input
												 type="radio"
												 class="deliveryZoneRadio"
												 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 for="deliveryZoneId{order_delivery.zone_list.ID}">
												 {order_delivery.zone_list.NAME}
											 </label>
										 </td>
										 <td width="18%">
											 <label for="deliveryZoneId{order_delivery.zone_list.ID}">
												 <span class="deliveryZonePrice">
												 <b>+ {order_delivery.zone_list.END_PRICE | money_format}</b>
												 </span>
											 </label>
										 </td>
									 </tr>
								 {% ENDFOR zone_list %}
замените на:
{% FOR zone_list %}
		 <tr class="zones">
			 <td></td>
			 <td>
			 <!-- Заголовок внутри метода доставки, появляется только один раз-->
			 {% IF order_delivery.zone_list.index=1 %}
				 <label for="quickDeliveryIdMain{order_delivery.ID}" class="zones-header">Зоны доставки</label>
			 {% ENDIF %}
			 <input
				 type="radio" class="deliveryZoneRadio" deliveryid="{order_delivery.ID}" id="quickDeliveryZoneId{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="quickDeliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;">
				 {order_delivery.zone_list.NAME}
				 <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span>
			 </label>
			 </td>
			 <td></td>
		 </tr>
		 {% ENDFOR %}

далее в конце main.js пропишите:
/* !PickPoint--*/
$(function() {
$('.zones').hide();
$('.deliveryRadio').click(function() {
$('.orderStageDeliveryListTable > tbody').each(function() {
$(this).find('tr:not(:eq(0), :eq(1))').hide();
});
$(this).closest('tbody').find('tr').show();
});
$('.deliveryRadio:checked').trigger('click');
});
Сделал, в результате получился бардак, и подпункты все равно не скрыты

#17 Vaccina

Vaccina

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

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

Отправлено 19 Август 2014 - 08:40

В файл стилей main.css добавьте:
.zones-header {
float: none !important;
}

а javascript код выше замените на:
$(function () {
  $('.zones').hide();
  $('.deliveryRadio').click(function () {
	$('.zones').hide();
	var tree = $(this).closest('tr');
	while(true) {
	   if (!tree.next('.zones').length) break;
		   tree = tree.next('.zones').show();
	   }
	});
	$('.deliveryRadio:checked') .trigger('click');
});


#18 luzikov

luzikov

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

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

Отправлено 20 Август 2014 - 22:20

Просмотр сообщенияVaccina (19 Август 2014 - 08:40) писал:

В файл стилей main.css добавьте:
.zones-header {
float: none !important;
}

а javascript код выше замените на:
$(function () {
$('.zones').hide();
$('.deliveryRadio').click(function () {
$('.zones').hide();
var tree = $(this).closest('tr');
while(true) {
	 if (!tree.next('.zones').length) break;
		 tree = tree.next('.zones').show();
	 }
});
$('.deliveryRadio:checked') .trigger('click');
});
сделал. Все также плохо

#19 Сake

Сake

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

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

Отправлено 20 Август 2014 - 23:41

Предложенная инструкция действует для простого "пошагового" оформления заказа. У вас используется форма быстрого заказа в корзине. Вам необходимо просто разместить ранее предложенный код в шаблоне "Быстрый заказ" до закрывающего тега </script>

#20 Serg83

Serg83

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

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

Отправлено 28 Август 2014 - 19:23

Просмотр сообщенияСake (20 Август 2014 - 23:41) писал:

Предложенная инструкция действует для простого "пошагового" оформления заказа. У вас используется форма быстрого заказа в корзине. Вам необходимо просто разместить ранее предложенный код в шаблоне "Быстрый заказ" до закрывающего тега </script>


быстрый заказ используется только при заказе с карточки товара!
оформление же через корзину идет стандартными долгими 4-мя шагами....




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

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