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


Внести Изменения В Оформление Заказа

методы доставки

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

#1 Serg83

Serg83

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

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

Отправлено 29 Январь 2013 - 13:31

добрый день.

есть необходимость внести изменения в оформление заказа на страницу оформления заказа Шаг2 - "Доставка" (http://knife-for-lif...stage/delivery#), а именно добавить строку с выбором пункта получения заказа (сейчас она выведена на 2-м шаге в самом верху страницы).

вот ее код (возможно в нем  еще есть лишние элементы, но частично я его почистил уже):


<script type="text/javascript" src="http://pickpoint.ru/select/postamat.js"></script>
<form method="post">
<!-- это пустой контейнер для вывода пользователю названия точки и ее адреса -->
<div id="address"></div>
<a href="#" onclick="PickPoint.open(my_function);return false">Выбрать постамат PickPoint</a>

<!-- в это поле поместится ID постамата или пункта выдачи -->
<input type="hidden" name="pickpoint_id" id="pickpoint_id" value="" /><br /><br />
</form>
<script type="text/javascript">
function my_function(result){
// устанавливаем в скрытое поле ID терминала
document.getElementById('pickpoint_id').value=result['id'];

// показываем пользователю название точки и адрес доствки
document.getElementById('address').innerHTML=result['name']+'<br />'+result['address'];
}
</script>

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

пока вижу реализацию 2-мя способами:

1) указать ссылку или скрипт в описании метода доставки, как я понял, не возможно...
поэтому можно сделать на странице выбора метода доставки текстовые поля, вместо кода с выбором способа доставки и уже там разместить скрипт с выбором определенной точки доставки, приведенный выше.

2) "привязать" скрипт к определенному методу доставки - то есть вывести под нужным методом доставки ссылку на выбор пункта. если конечно это возможно сделать....

увы, как это реализовать, я еще не понял.

1) Подскажите, как сделать правильнее с точки зрения Вашего кода?
2) как реализовать данную задачу?
3) как сделать, чтобы выбранный пункт доставки указывался в стандартном пункте "адрес доставки"?

заранее премного благодарен за советы! :)

#2 Vaccina

Vaccina

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

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

Отправлено 29 Январь 2013 - 23:42

Привязать действие к определенному пункту доставки можно, так же можно от этого действия вывести информацию в поле доставка, вот только создать дополнительное поле и сохранить его - нельзя. К этому относиться поле

<input type="hidden" name="pickpoint_id" id="pickpoint_id" value="" />

в данном случае данную информацию как pickpoint_id некуда сохранить и в последствии передать для отображения в статусе заказа. Возможно как вариант задействовать уже существующее поле, например комментарий, и вставлять данную информацию в данное поле.

В данном случае вам необходимо добавить в файл main.js следующий код

$(function() {
  $('.deliveryRadio').click(function() {
   if($(this).val() == '149417') {
	  $('#deliveryComment').closest('tr').hide();
	  PickPoint.open(function(result) {
	  $('#deliveryComment').val(result['id']);
   $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
   });
   }
   else {
		$('#deliveryComment').val('').closest('tr').show();
  $('#deliveryAddress').val('');
   }
  });
});

Далее в шаблоне "Просмотр заказа" найти и удалить

{% IF ORDER_DELIVERY_COMMENT %}
		<tr>
		  <td class="cell1"><p><span>Комментарий к заказу:</span></p></td>
		  <td class="cell2">{ORDER_DELIVERY_COMMENT | nl2br}</td>
		</tr>
		{% ENDIF %}

так же в шаблоне "Оформление заказа" найти и удалить

{% IF ORDER_FORM_DELIVERY_COMMENT %}
				<tr>
				  <td class="cell1"><p><span>Комментарий к заказу</span></p></td>
				  <td class="cell2">{ORDER_FORM_DELIVERY_COMMENT | nl2br}</td>
				</tr>
				{% ENDIF %}

так же в шаблоне "ЛК Информация о заказе" найти и удалить

<tr>
				<td><label>Комментарий:</label></td>
				<td>{CLIENT_ORDER_COMMENT}</td>
			  </tr>


#3 Serg83

Serg83

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

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

Отправлено 30 Январь 2013 - 12:32

Просмотр сообщенияVaccina (29 Январь 2013 - 23:42) писал:

Привязать действие к определенному пункту доставки можно, так же можно от этого действия вывести информацию в поле доставка, вот только создать дополнительное поле и сохранить его - нельзя. К этому относиться поле


чтобы убрать "комментарии", удалил еще этот блок (правда не знаю нужно ли было...):


{% IF SETTINGS_ORDER_FIELDS_COMMENT<3 %}
				  <tr>
					<td width="10%">
					  <label for="deliveryComment">Комментарии:{% IF SETTINGS_ORDER_FIELDS_COMMENT=1 %}<span class="red">*</span>{% ENDIF %}</label>
					</td>
					<td width="90%">
					  <textarea id="deliveryComment" name="form[delivery][comment]" {% IF SETTINGS_ORDER_FIELDS_COMMENT=1 %}class="required"{% ENDIF %}>{ORDER_FORM_DELIVERY_COMMENT}</textarea>
					</td>
				  </tr>
				{% ENDIF %}

а в целом, сделал все как вы написали, но при оформлении доставки изменений не увидел :huh:
на странице "оформление заказа" не нужно никакой скрипт запускать для выбора пункта доставки пикпоинт?
и куда именно, его лучше разместить?

p.s. а его сейчас убрал пока, а то вчера выбор пункта доставки появился на всех этапах оформления заказа, так еще и кнопки "далее" и "назад" перестали работать....

#4 Serg83

Serg83

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

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

Отправлено 30 Январь 2013 - 12:42

Vaccina, и если не сложно, скажите, зачем мы убирали строку комментариев? чтобы на ее месте выводить инфу о постамате пикпоинт?
а можно сделать так, чтобы комментарии к заказу оставались у всех типов доставки, кроме пикпоинт?

#5 Koderhan

Koderhan

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

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

Отправлено 30 Январь 2013 - 14:32

Просмотр сообщенияSerg83 (30 Январь 2013 - 12:42) писал:

Vaccina, и если не сложно, скажите, зачем мы убирали строку комментариев? чтобы на ее месте выводить инфу о постамате пикпоинт?
а можно сделать так, чтобы комментарии к заказу оставались у всех типов доставки, кроме пикпоинт?
К сожалению нельзя.

#6 Vaccina

Vaccina

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

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

Отправлено 30 Январь 2013 - 23:27

Если вы правильно сделали изменения из сообщения http://forum.storela...аза/#entry40998
, то все должно корректно работать. Поле комментария убирается для внесения в него номера pickpoint, так как вам ведь его необходимо получить от покупателя. Так как создать дополнительные поля нельзя, то используем менее значимое поле под данные нужды.

Код в файл main.js необходимо вставлять в самый конец данного файла. Так же вам необходимо разместить строку

<script type="text/javascript" src="http://pickpoint.ru/select/postamat.js"></script>

в ваш шаблон "HTML" перед подключением файла main.js

#7 Serg83

Serg83

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

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

Отправлено 31 Январь 2013 - 17:42

Просмотр сообщенияVaccina (30 Январь 2013 - 23:27) писал:

Если вы правильно сделали изменения из сообщения http://forum.storela...аза/#entry40998
, то все должно корректно работать. Поле комментария убирается для внесения в него номера pickpoint, так как вам ведь его необходимо получить от покупателя. Так как создать дополнительные поля нельзя, то используем менее значимое поле под данные нужды.

Код в файл main.js необходимо вставлять в самый конец данного файла. Так же вам необходимо разместить строку

<script type="text/javascript" src="http://pickpoint.ru/select/postamat.js"></script>

в ваш шаблон "HTML" перед подключением файла main.js

1) сделал все как Вы написали, с учетом этого поста. но увы поле выбора пикпоинт не появляется на странице оформления заказа :unsure:
можете сами проверить правильность кода на сайте (логин и пароль - старые, у Вас они есть)

2) потом разместил скрипт  пикпоинт

<script type="text/javascript" src="[url="http://pickpoint.ru/select/postamat.js%22></script>"]http://pickpoint.ru/...t.js"></script>[/url]
<form method="post">
<!-- это пустой контейнер для вывода пользователю названия точки и ее адреса -->
<div id="address"></div>
<a href="#" onclick="PickPoint.open(my_function);return false">Выбрать постамат PickPoint</a>

<!-- в это поле поместится ID постамата или пункта выдачи -->
<input type="hidden" name="pickpoint_id" id="pickpoint_id" value="" /><br /><br />
</form>
<script type="text/javascript">
function my_function(result){
// устанавливаем в скрытое поле ID терминала
document.getElementById('pickpoint_id').value=result['id'];

// показываем пользователю название точки и адрес доствки
document.getElementById('address').innerHTML=result['name']+'<br />'+result['address'];
}
</script>

разумеется появился выбор постамата, но он показывается всегда (как и раньше), то есть не привязан ни к какому методу доставки.
и выбранный адрес постамата при оформлении заказа нигде не сохраняется.... то есть его видит только клиент (((
нельзя этот адрес выводить в поле "адрес доставки"?

3) Подскажите все же, как заменить автоматические подставления методов доставки, текстовыми описаниями или дополнить названия методов доставки, выводимые автоматически, текстовыми описаниями (не через "Настройки/Доставка")

#8 Vaccina

Vaccina

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

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

Отправлено 01 Февраль 2013 - 00:49

Вам не нужно размещать весь этот код. Достаточно добавить только

<script type="text/javascript" src="http://pickpoint.ru/select/postamat.js"></script>

об этом я писала вам выше. В файле main.js у вас отсутствует код. http://forum.storela...аза/#entry40998

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

#9 Serg83

Serg83

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

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

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

Просмотр сообщенияVaccina (01 Февраль 2013 - 00:49) писал:

Вам не нужно размещать весь этот код. Достаточно добавить только

<script type="text/javascript" src="http://pickpoint.ru/select/postamat.js"></script>

об этом я писала вам выше. В файле main.js у вас отсутствует код. http://forum.storela...аза/#entry40998

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

ну как же нет то... вот он:

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

  • Снимок экрана 2013-02-01 в 11.04.18.png


#10 Koderhan

Koderhan

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

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

Отправлено 01 Февраль 2013 - 12:50

Просмотр сообщенияSerg83 (01 Февраль 2013 - 10:05) писал:

ну как же нет то... вот он:
вам нужно удалить из файла main.css.
Код:
/* !PickPoint--*/
$(function() {
  $('.deliveryRadio').click(function() {
   if($(this).val() == '149417') {
		  $('#deliveryComment').closest('tr').hide();
		  PickPoint.open(function(result) {
		  $('#deliveryComment').val(result['id']);
   $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
   });
   }
   else {
				$('#deliveryComment').val('').closest('tr').show();
  $('#deliveryAddress').val('');
   }
  });
});
/* !PickPoint--*/
Main.css это файл стилей. В не может выполняться JS код.

#11 Serg83

Serg83

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

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

Отправлено 01 Февраль 2013 - 14:39

Просмотр сообщенияKoderhan (01 Февраль 2013 - 12:50) писал:


Main.css это файл стилей. В не может выполняться JS код.

эх, невнимательность......

спасибо Vaccina! спасибо Koderhan!
Все отлично работает!

#12 Serg83

Serg83

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

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

Отправлено 03 Февраль 2013 - 15:52

добрый день.

сорри, но оказывается еще не все вопросы решены по данному пункту доставки )

1) возможно ли скрыть Зоны у метода доставки, до выбора данного метода доставки клиентом?
проблема вот в чем: задал зоны для Пикпоинт - они показываются сразу при переходе на 2-й шаг оформления заказа. соответственно клиент модет сразу поставить галочку напротив контректной зоны достаки, тем самым галочка у метода доставки "Пикпоинт" ставится автоматически. Но выбрать адрес уже не предлагается.... подскажите, пожалуйста, как исправить?


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

3) можно ли снабдить методы доставки текстовыми описаниями со ссылками, прописав их прямо на странице "оформления заказа"?
Через "Настройки/Доставка" ссылки дать не получается.

p.s. кстати, адрес постамата пикпоинт ставится в родную строку "адрес доставки". теперь не понятно, можно ли включить обратно комментарии к заказу? :rolleyes:

#13 Vaccina

Vaccina

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

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

Отправлено 05 Февраль 2013 - 02:33

1) Не совсем понимаю о каких зонах идет речь. Пожалуйста, объясните по подробнее или приведите пример на вашем сайте.
2) Корректно это реализовать не получиться, так как вероятно сам скрипт

http://pickpoint.ru/select/postamat.js

не успевает вовремя загрузиться. Попробуйте его расположить повыше в шаблоне "HTML".

3) К сожалению, это сделать не получиться.

4) Вы можете заменить

/* !PickPoint--*/
$(function() {
  $('.deliveryRadio').click(function() {
   if($(this).val() == '149417') {
				  $('#deliveryComment').closest('tr').hide();
				  PickPoint.open(function(result) {
				  $('#deliveryComment').val(result['id']);
   $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
   });
   }
   else {
								$('#deliveryComment').val('').closest('tr').show();
  $('#deliveryAddress').val('');
   }
  });
});
/* !PickPoint--*/

на

/* !PickPoint--*/
$(function() {
  $('.deliveryRadio').click(function() {
   if($(this).val() == '149417') {
				  $('#deliveryComment').closest('tr').hide();
				  PickPoint.open(function(result) {
				
   $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
   });
   }
   else {
							   
  $('#deliveryAddress').val('');
   }
  });
});
/* !PickPoint--*/

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

#14 Serg83

Serg83

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

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

Отправлено 05 Февраль 2013 - 13:55

Просмотр сообщенияVaccina (05 Февраль 2013 - 02:33) писал:

1) Не совсем понимаю о каких зонах идет речь. Пожалуйста, объясните по подробнее или приведите пример на вашем сайте.


Зоны доставки привязанные к методу, чтобы автоматически выводить стоимость доставки клиенту.  Например, Зона1 - 100 рублей, Зона2 - 300 рублей.
Когда назначены зоны, они появляются ниже под способом доставки на странице "Оформление заказа" и у каждой зоны есть возможность поставить галочку. Также галочку можно поставить напротив метода "Пикпоинт".
Проблема в том, что если галочку клиент ставит сразу на зону, она автоматом ставится и у метода, НО выбора постамата уже не предлагается. Как это исправить?

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

за остальное спасибо :)

p.s. пару тестовых Зон у пикпоинт добавил на сайте для нагладности.

#15 Vaccina

Vaccina

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

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

Отправлено 06 Февраль 2013 - 07:51

Попробуйте использовать следующий код

/* !PickPoint--*/
$(function() {
  $('.deliveryZoneRadio').closest('tr').hide();
  $('.deliveryRadio, .deliveryZoneRadio').click(function() {
   $(this).closest('tbody').find('tr').show();
   if($(this).closest('tbody').attr('rel') == '149417') {
		PickPoint.open(function(result) {						
			$('#deliveryAddress').val(result['name'] + "\n" + result['address']);
		});
   }
   else {
	   $('#deliveryAddress').val('');
   }
  });
});
/* !PickPoint--*/


#16 Serg83

Serg83

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

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

Отправлено 06 Февраль 2013 - 10:51

Просмотр сообщенияVaccina (06 Февраль 2013 - 07:51) писал:

Попробуйте использовать следующий код

/* !PickPoint--*/
$(function() {
$('.deliveryZoneRadio').closest('tr').hide();
$('.deliveryRadio, .deliveryZoneRadio').click(function() {
$(this).closest('tbody').find('tr').show();
if($(this).closest('tbody').attr('rel') == '149417') {
	 PickPoint.open(function(result) {						
		 $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
	 });
}
else {
	 $('#deliveryAddress').val('');
}
});
});
/* !PickPoint--*/

поставил код.
Зоны доставки получились свернутыми и показываются после выбора Метода доставкии и постамата.
только вот другая беда - при выборе Зоны снова предлагается выбрать постамат на карте пикпоинт. то есть клиент должен выбирать 2 раза постамат на карте: 1) при выборе метода доставки, 2) при выборе Зоны доставки.
как убрать первый?

#17 Vaccina

Vaccina

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

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

Отправлено 07 Февраль 2013 - 23:37

Попробуйте тогда использовать следующий код

/* !PickPoint--*/
$(function() {
$('.deliveryZoneRadio').closest('tr').hide();
$('.deliveryRadio').click(function() {
$(this).closest('tbody').find('tr').show();
});
$('.deliveryZoneRadio').click(function() {
if($(this).closest('tbody').attr('rel') == '149417') {
		 PickPoint.open(function(result) {											
				 $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
		 });
}
else {
		 $('#deliveryAddress').val('');
}
});
});
/* !PickPoint--*/


#18 Serg83

Serg83

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

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

Отправлено 11 Февраль 2013 - 16:08

Просмотр сообщенияVaccina (07 Февраль 2013 - 23:37) писал:

Попробуйте тогда использовать следующий код

/* !PickPoint--*/
$(function() {
$('.deliveryZoneRadio').closest('tr').hide();
$('.deliveryRadio').click(function() {
$(this).closest('tbody').find('tr').show();
});
$('.deliveryZoneRadio').click(function() {
if($(this).closest('tbody').attr('rel') == '149417') {
		 PickPoint.open(function(result) {											
				 $('#deliveryAddress').val(result['name'] + "\n" + result['address']);
		 });
}
else {
		 $('#deliveryAddress').val('');
}
});
});
/* !PickPoint--*/

все осталось также. выбирать постамат нужно 2 раза - при постановке галочки пикпоинт и при выборе зоны :huh:

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

#19 Vaccina

Vaccina

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

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

Отправлено 12 Февраль 2013 - 00:25

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

#20 Serg83

Serg83

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

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

Отправлено 13 Февраль 2013 - 11:34

действительно, сорри :rolleyes:
ох уж этот кеш.....




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

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