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


Как Ограничить Время Доставки?


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

#1 ogonek7777

ogonek7777

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

  • Пользователи
  • PipPipPipPip
  • 2 109 сообщений
  • ГородМосква

Отправлено 14 Июль 2012 - 21:25

Вот кусок оформления заказа с выбором "удобного времени доставки", как мне ограничить в открывающемся списки диапазон с 12-00 до 22-00?
            
c <select name="form[delivery][convenient_time_from]">
						<option></option>
					  	{% FOR convenient_time_from_list %}
							<option value="{convenient_time_from_list.HOUR_INT}" {% IF convenient_time_from_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_from_list.HOUR}</option>
					  	{% ENDFOR %}
						</select>
				  	до
						<select name="form[delivery][convenient_time_to]">
					  	<option></option>
					  	{% FOR convenient_time_to_list %}
							<option value="{convenient_time_to_list.HOUR_INT}" {% IF convenient_time_to_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_to_list.HOUR}</option>
					  	{% ENDFOR %}
						</select>


#2 Vaccina

Vaccina

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

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

Отправлено 17 Июль 2012 - 06:35

Используйте следующий код

c <select name="form[delivery][convenient_time_from]">
<option></option>
{% FOR convenient_time_from_list %}
{%IF convenient_time_from_list.HOUR_INT>11%}{%IF convenient_time_from_list.HOUR_INT<23%}
<option value="{convenient_time_from_list.HOUR_INT}" {% IF convenient_time_from_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_from_list.HOUR}</option>
{%ENDIF%}{%ENDIF%}
{% ENDFOR %}
</select>
до
<select name="form[delivery][convenient_time_to]">
<option></option>
{% FOR convenient_time_to_list %}
{%IF convenient_time_to_list.HOUR_INT>11%}{%IF convenient_time_to_list.HOUR_INT<23%}
<option value="{convenient_time_to_list.HOUR_INT}" {% IF convenient_time_to_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_to_list.HOUR}</option>
{%ENDIF%}{%ENDIF%}
{% ENDFOR %}
</select> 


#3 ogonek7777

ogonek7777

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

  • Пользователи
  • PipPipPipPip
  • 2 109 сообщений
  • ГородМосква

Отправлено 18 Июль 2012 - 10:38

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

#4 mnbv2005

mnbv2005

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

  • Пользователи
  • PipPipPipPip
  • 201 сообщений
  • ГородМосква

Отправлено 21 Ноябрь 2012 - 00:42

Поскажите, как разбить время доставки на 2 группы: с 10 до 15  и  с 15 до 21?

#5 Koderhan

Koderhan

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

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

Отправлено 21 Ноябрь 2012 - 09:48

Просмотр сообщенияmnbv2005 (21 Ноябрь 2012 - 00:42) писал:

Поскажите, как разбить время доставки на 2 группы: с 10 до 15  и  с 15 до 21?
Если вы хотите добавить два поля с временем доставки то это сделать нельзя. По причине того что форма принимающая этот запрос просто не сможет его обработать.

#6 mnbv2005

mnbv2005

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

  • Пользователи
  • PipPipPipPip
  • 201 сообщений
  • ГородМосква

Отправлено 22 Ноябрь 2012 - 06:37

Добрый день!
Я добавлять не хочу поля, я хочу ограничить время! На данный момент покупатель может выбрать - доставка с 1.00, с 2.00....с 24.00  и до 1.00, до 2.00....до 24.00! Я хочу уменьшить выбор покупателя  - с 9.00, с 14.00   и до  14.00, до 20.00!
Или может быть есть какой другой вариант?
При совершении покупки покупатели делают очень маленький временной диапазон и каждый раз приходиться объяснять, что заказ не один, что в Москве пробки и т.п.

#7 support 2.0

support 2.0

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

  • Модераторы
  • 4 924 сообщений

Отправлено 22 Ноябрь 2012 - 11:14

Просмотр сообщенияmnbv2005 (22 Ноябрь 2012 - 06:37) писал:

Добрый день!
Я добавлять не хочу поля, я хочу ограничить время! На данный момент покупатель может выбрать - доставка с 1.00, с 2.00....с 24.00  и до 1.00, до 2.00....до 24.00! Я хочу уменьшить выбор покупателя  - с 9.00, с 14.00   и до  14.00, до 20.00!
Или может быть есть какой другой вариант?
При совершении покупки покупатели делают очень маленький временной диапазон и каждый раз приходиться объяснять, что заказ не один, что в Москве пробки и т.п.


Вам нужно зайти в Панель управления -> Сайт -> Редактор тем -> файл Оформление заказа
Найдите блок
 
	<!-- Если запрашивается поле удобного времени доставки  -->
				{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME<3 %}
				  <tr>
					<td width="10%">
					  <label for="deliveryConvenientDate">Удобное время доставки:{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}<span class="red">*</span>{% ENDIF %}</label>
					</td>
					<td width="90%">
					  <input id="deliveryConvenientDate" name="form[delivery][convenient_date]" value="{ORDER_FORM_DELIVERY_CONVENIENT_DATE}" {% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}class="required"{% ENDIF %} />
					  c <select name="form[delivery][convenient_time_from]">
						<option></option>
						  {% FOR convenient_time_from_list %}
							<option value="{convenient_time_from_list.HOUR_INT}" {% IF convenient_time_from_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_from_list.HOUR}</option>
						  {% ENDFOR %}
						</select>
					  до
						<select name="form[delivery][convenient_time_to]">
						  <option></option>
						  {% FOR convenient_time_to_list %}
							<option value="{convenient_time_to_list.HOUR_INT}" {% IF convenient_time_to_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_to_list.HOUR}</option>
						  {% ENDFOR %}
						</select>
					</td>
				  </tr>
				{% ENDIF %}
и замените на
 
 <!-- Если запрашивается поле удобного времени доставки  -->
				{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME<3 %}
				  <tr>
					<td width="10%">
					  <label for="deliveryConvenientDate">Удобное время доставки:{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}<span class="red">*</span>{% ENDIF %}</label>
					</td>
					<td width="90%">
					  <input id="deliveryConvenientDate" name="form[delivery][convenient_date]" value="{ORDER_FORM_DELIVERY_CONVENIENT_DATE}" {% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}class="required"{% ENDIF %} />
					  	c <select name="form[delivery][convenient_time_from]">
						<option></option>
			
	  
				  
							{% FOR convenient_time_from_list %}
									
			{% IF convenient_time_from_list.HOUR_INT=9 %}<option value="{convenient_time_from_list.HOUR_INT}" {% IF convenient_time_from_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_from_list.HOUR}</option>{% ENDIF %}
							{% IF convenient_time_from_list.HOUR_INT=14 %}<option value="{convenient_time_from_list.HOUR_INT}" {% IF convenient_time_from_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_from_list.HOUR}</option>{% ENDIF %}
							{% ENDFOR %}
						</select>
						до <select name="form[delivery][convenient_time_to]">
							<option></option>
							{% FOR convenient_time_to_list %}
							{%IF convenient_time_to_list.HOUR_INT=14%}<option value="{convenient_time_to_list.HOUR_INT}" {% IF convenient_time_to_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_to_list.HOUR}</option>{%ENDIF%}
			   {%IF convenient_time_to_list.HOUR_INT=20%}<option value="{convenient_time_to_list.HOUR_INT}" {% IF convenient_time_to_list.SELECTED %}selected="selected"{% ENDIF %}>{convenient_time_to_list.HOUR}</option>{%ENDIF%} 
							{% ENDFOR %}
						</select> 
					</td>
					 </tr>
					
					
				 
				{% ENDIF %}


#8 mnbv2005

mnbv2005

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

  • Пользователи
  • PipPipPipPip
  • 201 сообщений
  • ГородМосква

Отправлено 22 Ноябрь 2012 - 20:55

Спасибо! :)

#9 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

Доброго вечера!

Возможно ли сделать так, что если клиент сделал заказ, например, в 17.30, то в разделе "Оформление заказа" в поле "Удобное время доставки" время "С" указывалось с отступом  1 или 2 часа от времени заказа (с округлением до часов можно)? То есть в 17.30 заказал, а в поле Удобное время доставки в графе "С" можно выбрать начальное время интервала не ранее 20.00.

#10 Vaccina

Vaccina

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

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

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

Попробуйте в файл main.js после

$(document).ready(function(){

добавить

if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
}


#11 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

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

Попробуйте в файл main.js после

$(document).ready(function(){

добавить

if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
}

Спасибо. Код добавил. Проверяю, начиная с 18.00 (в графе "С"), выдает ""Выберите другой интервал". А данный код увязан с текущим временем, ну в данном случае с московским?

#12 Vaccina

Vaccina

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

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

Отправлено 16 Январь 2013 - 04:24

Данный код будет зависеть от установленного на компьютере пользователя времени. Проверила данный код еще раз, код корректно отрабатывается. Так же на вашем сайте данный код корректно отрабатывается. При локальном времени 8 часов - устанавливается время доставки с 10 часов.

#13 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

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

Данный код будет зависеть от установленного на компьютере пользователя времени. Проверила данный код еще раз, код корректно отрабатывается. Так же на вашем сайте данный код корректно отрабатывается. При локальном времени 8 часов - устанавливается время доставки с 10 часов.

Проверил еще раз в режиме реального времени так сказать... Что-то не клеится...

1. Минимальный интервал доставки в размере 2-х часов действительно отрабатывается.  Причем и в ту и в другую сторону. То есть, с какого бы пункта человек не начал заполнять удобное время (или "С", или "ПО"). За это огромное спасибо!
2. А вот "время отсчета" с какого человек может выбрать начала интервала доставки не зависит от текущего времени. На скриншотах это видно.

ScreenShot 1.jpg ScreenShot 2.jpg ScreenShot 3.jpg


3. Почему, когда я ограничил возможный интервал доставки в с день с 9.00 до 23.00, у меня перед 9.00 появилось пустое поле?

#14 Koderhan

Koderhan

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

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

Отправлено 16 Январь 2013 - 10:16

Просмотр сообщенияKengashop (16 Январь 2013 - 08:43) писал:

Проверил еще раз в режиме реального времени так сказать... Что-то не клеится...

1. Минимальный интервал доставки в размере 2-х часов действительно отрабатывается.  Причем и в ту и в другую сторону. То есть, с какого бы пункта человек не начал заполнять удобное время (или "С", или "ПО"). За это огромное спасибо!
2. А вот "время отсчета" с какого человек может выбрать начала интервала доставки не зависит от текущего времени. На скриншотах это видно.

Прикрепленный файл ScreenShot 1.jpgПрикрепленный файл ScreenShot 2.jpgПрикрепленный файл ScreenShot 3.jpg


3. Почему, когда я ограничил возможный интервал доставки в с день с 9.00 до 23.00, у меня перед 9.00 появилось пустое поле?
Если вы хотите чтобы остальные варианты времени для пользователя не были доступны то можно воспользоваться кодом в main.js.
  if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
$('#deliveryConvenientDate').next().find('[value]:not([value="' + (date.getHours() + 2) + '"])').attr("disabled", "disabled");
}


#15 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

Просмотр сообщенияKoderhan (16 Январь 2013 - 10:16) писал:

Если вы хотите чтобы остальные варианты времени для пользователя не были доступны то можно воспользоваться кодом в main.js.
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
$('#deliveryConvenientDate').next().find('[value]:not([value="' + (date.getHours() + 2) + '"])').attr("disabled", "disabled");
}

А после какого кода его нужно вставить? Вставил в самом конце... но ничего не произошло...

#16 Koderhan

Koderhan

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

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

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

Просмотр сообщенияKengashop (16 Январь 2013 - 11:19) писал:

А после какого кода его нужно вставить? Вставил в самом конце... но ничего не произошло...
В файл main.js.
Найти ранее добавленный код:
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
}
Заменить:
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
$('#deliveryConvenientDate').next().find('[value]:not([value="' + (date.getHours() + 2) + '"])').attr("disabled", "disabled");
}


#17 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

Ээээ)))) Ступил! Щас попробую!

#18 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

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

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

В файл main.js.
Найти ранее добавленный код:
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
}
Заменить:
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
$('#deliveryConvenientDate').next().find('[value]:not([value="' + (date.getHours() + 2) + '"])').attr("disabled", "disabled");
}

Видимо я плохо формулирую запрос и мы соответственно не очень хорошо друг друга понимаем. Попытаюсь уложить у себя в голове и сформулировать еще раз. Итак.

1. Нужно, чтобы при выборе времени доставки клиенту выдавалось начальное время интервала "С", начиная с +2 часов от текущего местного времени. То есть заказывает клиент в 12 часов, а в поле "С" у него активно время, начиная только с 14 часов и до конца интервала доставки с учетом двух часов интервала. Доставка осуществляется до 23 часов, соответственно в поле "С" у клиента в 12 часов местного времени активно время с 14 до 21 часа.

2. При выборе времени в поле "ПО" активный для клиента временной интервал начинался бы +2 часа от времени "С" и соответственно до конца доставки (до 23 часов).

3. То есть если мне заказали товар в 12 часов, то я должен его доставить клиенту самое быстрое с 14 до 16 часов, либо с 14 до 17, 18, 19, 20, 21, 22, 23 часов, но не ранее, чем с 14 до 16 часов и не позднее 23 часов.

4. Лучше, конечно, если при этом активное и неактивное время выделялось цветом в том числе.

А теперь соответственно опишу ситуацию сейчас.
1) доходишь до шага 2 и выбираешь дату доставки - все здесь ок.
2) выбираешь в поле "С" время - при этом текущее время 16.55, а выдается 18.00, а должно выдавать все в интервале с 19 до 21 часа
ScreenShot 7.jpg

3) потом выбираешь время "ПО", здесь поначалу вроде все правильно, 2 часа интервала от времени "С" полностью соблюдаются
ScreenShot 9.jpg ScreenShot 10.jpg

4) а вот потом ты берешь и переходишь снова в поле "С" и ставишь там время нааамного раньше текущего и оформляешь заказ. В итоге получается вот это!
ScreenShot 11.jpg ScreenShot 12.jpg


КАК БЫТЬ? Я ЧТО-ТО НЕ ТАК ДЕЛАЮ?

#19 Koderhan

Koderhan

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

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

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

Спасибо за детальное описание.
Надеюсь я правильно вас понял.
Попробуйте, пожалуйста код:
	if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
t=$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr('value');
t=parseInt(t);
$('#deliveryConvenientDate').next().find('option').each(function(){
  f=$(this).attr('value');
  f=parseInt(f);
  if(f<t) {
	$(this).attr('disabled','disabled');
  }
 
});
}
вставить в файл main.js.
После кода:
$(document).ready(function(){


#20 Kengashop

Kengashop

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

  • Пользователи
  • PipPip
  • 49 сообщений
  • ГородПермь

Отправлено 16 Январь 2013 - 21:18

Просмотр сообщенияKoderhan (16 Январь 2013 - 18:17) писал:

Спасибо за детальное описание.
Надеюсь я правильно вас понял.
Попробуйте, пожалуйста код:
if($('#deliveryConvenientDate').length) {
var date = new Date();
$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr("selected", "selected");
t=$('#deliveryConvenientDate').next().find('[value="' + (date.getHours() + 2) + '"]').attr('value');
t=parseInt(t);
$('#deliveryConvenientDate').next().find('option').each(function(){
f=$(this).attr('value');
f=parseInt(f);
if(f<t) {
$(this).attr('disabled','disabled');
}

});
}
вставить в файл main.js.
После кода:
$(document).ready(function(){


))))))))))))))) спасибо... вставил...)

Но что-то привязка к текущему времени не работает... Все остальное вроде работает корректно, но проверил я это все по последующим дням. А вот 16 число... то есть сегодня (по крайней мере у меня) не работает... причем и привязка к текущему времени и все остальное. 16 числа все осталось также, как было в моем сообщении, когда я описывал всю ситуацию подробно.
ScreenShot 13.jpg

Вот такие интервалы выдает мне система, с учетом того, что время первый час ночи 17 числа...




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

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