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


Изменение Времени И Даты Доставки


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

#1 delph101

delph101

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

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

Отправлено 29 Сентябрь 2014 - 10:41

Добрый вечер!
Подскажите, как я могу решить следующую задачу:
Интернет-магазин осуществляет доставку продуктов только в субботу и воскресенье. Заказчик может осуществить заказ на субботу не позднее четверга 16-00, на воскресенье не позднее пятницы 16-00.
Отсюда вопрос, как реализовать данные условия.
1. В календаре выбора даты доставки клиент мог выбрать только сб и вс, будни должны быть серого цвета неактивны.
2. Если клиент осуществляет заказ до 16-00 четверга, то для него активны все последующие дни субботы и воскресенья.
3. Если клиент осуществляет заказ в промежуток между 16-00 четверга и 16-00 пятницы, для него активно только воскресенье текущей недели и сб и вс следующих недель.
4. Если клиент осуществляет заказ после 16-00 пятницы, для него неактивны сб и вс текущей недели.
5. Для выбора времени доставки было только два варианта "до 14-00" и "после 14-00"

Заранее премного благодарен за помощь!

#2 delph101

delph101

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

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

Отправлено 07 Октябрь 2014 - 22:17

Товарищи скажите как сделать вот так:

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

  • 2.jpg
  • 4.jpg


#3 Сake

Сake

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

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

Отправлено 11 Октябрь 2014 - 05:58

Пожалуйста, не дублируйте ваши вопросы. Вам ответили в теме форума http://forum.storela...100#entry165328

#4 Den67

Den67

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

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

Отправлено 18 Ноябрь 2014 - 11:50

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

Дни доставки: только среда и суббота.

По субботам - можно выбрать один из двух диапазонов времени: "с 9 до 11" и с "11 до 13"
По средам - можно выбрать из двух диапазонов времени: "с 20 до 22" и "с 22 до 24"


На среду заказы принимаются до 18ч вторника, на субботу - до 18ч пятницы (ну понятно, что во вторник в 13ч дня например можно заказать не на среду, а сразу на субботу и т.д.).

PS: представляю сколько должно быть терпения у модераторов, чтобы перекраивать похожие ответы и вникать в суть каждой проблемы :)

PPS: немного упростил - блок время доставки вообще скрыть, то есть можно выбрать только день доставки (с условием до 18ч, о котором я писал выше..)

Очень надеюсь на вашу помощь, чтоб наконец закончить с сайтом

#5 Den67

Den67

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

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

Отправлено 19 Ноябрь 2014 - 09:38

Поможите люди добрые :)

#6 Vaccina

Vaccina

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

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

Отправлено 20 Ноябрь 2014 - 04:32

В main.js найдите:
$("#deliveryConvenientDate").datepicker({
  dayNames	  : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
  dayNamesMin	: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
  closeText	  : 'Готово',
  currentText	: 'Сегодня' ,
  duration	  : '',
  monthNames	: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
  monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
  yearRange	  : "-6:+6",
  dateFormat	: 'dd.mm.yy',
  minDate		 : new Date(),
  firstDay	  : 1
});
замените на:
var date = new Date();
   if(date.getHours() > 18 || date.getHours() == 0) {
				  date.setDate(date.getDate() + 1);
   }
   $("#deliveryConvenientDate").datepicker({
  dayNames	  : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
  dayNamesMin	: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
  closeText	  : 'Готово',
  currentText	: 'Сегодня' ,
  duration	  : '',
  monthNames	: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
  monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
  yearRange	  : "-6:+6",
  dateFormat	: 'dd.mm.yy',
  minDate		 : new Date(),
  firstDay	  : 1,
	beforeShowDay: function(date) {
var diff = new Date();
return [date.getDay() == 3 || date.getDay() == 6];
}
});


#7 Den67

Den67

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

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

Отправлено 20 Ноябрь 2014 - 09:24

В main.js нет данного блока. Вставив просто его в конце - ничего не изменилось.
Так же попробовал вставить этот код в Быстрый заказ и далее из прошлой темы:

Цитата

далее загрузите файлы из архива Изображение datepicker.zip в раздел Сайт -> Редактор шаблонов. После этого в шаблоне "HTML" найдите строку

<script type="text/javascript" src="{ASSETS_JS_PATH}forall.js"></script>

и замените её на


<script type="text/javascript" src="{ASSETS_JS_PATH}forall.js"></script>
<link rel="stylesheet" href="{ASSETS_STYLES_PATH}datepicker.css" type="text/css" />
<script type="text/javascript" src="{ASSETS_JS_PATH}datepicker.js"></script>

Перед проверкой не забудьте очистить кэш в вашем браузере.


#8 Vaccina

Vaccina

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

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

Отправлено 22 Ноябрь 2014 - 07:08

прошу прощения, не посмотрела ваш шаблон, вы правильно процитировали, вам необходимо подключить файл, отмените последние изменения, что я вам предлагала, выполните инструкцию:
http://forum.storela...120#entry167585

Только вместо:
<script>
$(function() {
var minDate = new Date();
if ((minDate.getHours() >= 16 &amp;amp;&amp;amp; minDate.getDay() == 4) || (minDate.getHours() <= 16 &amp;amp;&amp;amp; minDate.getDay() == 5)) {
	 minDate.setDate(minDate.getDate() + (minDate.getDay() == 4 ? 3 : 2));
}
$("#quickDeliveryConvenientDate").datepicker({
	 dayNames: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	 dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	 closeText: 'Готово',
	 currentText: 'Сегодня' ,
	 duration: '',
	 monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
	 monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	 yearRange: "-6:+6",
	 dateFormat: 'dd.mm.yy',
	 minDate: minDate,
	 firstDay: 1,
	 beforeShowDay: function(date) {return([date.getDay() == 0 || date.getDay() == 6, ''])}
});
});
</script>
вставьте:
<script>
$(function() {
var date = new Date();
if(date.getHours() > 18 || date.getHours() == 0) {
								 date.setDate(date.getDate() + 1);
}
$("#deliveryConvenientDate").datepicker({
dayNames	 : ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
dayNamesMin : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
closeText	 : 'Готово',
currentText : 'Сегодня' ,
duration	 : '',
monthNames : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
yearRange	 : "-6:+6",
dateFormat : 'dd.mm.yy',
minDate			 : new Date(),
firstDay	 : 1,
	 beforeShowDay: function(date) {
var diff = new Date();
return [date.getDay() == 3 || date.getDay() == 6];
}
});
});
</script>


#9 Den67

Den67

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

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

Отправлено 23 Ноябрь 2014 - 22:18

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

#10 Vaccina

Vaccina

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

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

Отправлено 26 Ноябрь 2014 - 00:09

Проблема в идентификаторе элемента. Замените в вашем шаблоне "Быстрый заказ" строку

$("#deliveryConvenientDate").datepicker

на строку

$("#quickDeliveryConvenientDate").datepicker


#11 Den67

Den67

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

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

Отправлено 26 Ноябрь 2014 - 09:47

 Vaccina (26 Ноябрь 2014 - 00:09) писал:

Проблема в идентификаторе элемента. Замените в вашем шаблоне "Быстрый заказ" строку

$("#deliveryConvenientDate").datepicker

на строку

$("#quickDeliveryConvenientDate").datepicker

:wacko: ничего. кеш чистил. мистика какая-то..
PS: и по возможности, как сразу заодно убрать

Цитата

блок время доставки вообще скрыть, то есть можно выбрать только день доставки (с условием до 18ч, о котором я писал выше..)


#12 Den67

Den67

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

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

Отправлено 28 Ноябрь 2014 - 09:40

Поспособствуйте, пжлст, решению задачи) Время еще есть неделя-две до запуска, пока идет отбор материала, но без этой мелочи не запущусь)

#13 Vaccina

Vaccina

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

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

Отправлено 04 Декабрь 2014 - 06:23

попробуйте изменить в коде выше:
minDate				  : new Date(),
на:
minDate				  : date,


#14 delph101

delph101

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

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

Отправлено 19 Декабрь 2014 - 16:52

1. Как можно исправить данную ошибку: при оформлении заказа клиент выбирает время доставки заказа из двух вариантов, либо "до 14-00" либо "после 14-00" (файл 3.jpg), когда клиент выбирает "до 14-00" в админке показывается кривая дата доставки (файл 2.jpg), при выборе "после 14-00" выводиться дата (файл 1.jpg). Как это можно исправить? необходимо, чтоб выводило с 8-00 до 14-00 и с 14-00 до 23-00.

2. На данный момент у меня на сайте заказы можно формировать только на субботу и воскресенье. В преддверии нового года я хотел бы сделать возможность заказывать на 29.12.2014 и на 30.12.2014. Чтобы клиенты могли заказать на 29.12 до 16-00 27.12.2014, а на 30.12 до 16-00 28.12. Как это можно осуществить?

Заранее примногоблагодарен за ответ!

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

  • 1.jpg
  • 2.jpg
  • 3.jpg


#15 Vaccina

Vaccina

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

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

Отправлено 20 Декабрь 2014 - 02:49

укажите пожалуйста номер аккаунта в профиле форума

#16 delph101

delph101

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

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

Отправлено 21 Декабрь 2014 - 23:03

 Vaccina (20 Декабрь 2014 - 02:49) писал:

укажите пожалуйста номер аккаунта в профиле форума
Указал.

#17 Vaccina

Vaccina

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

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

Отправлено 24 Декабрь 2014 - 04:21

В конец шаблона Быстрого заказа вставьте:
<script>
$(function() {
  $('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function() {
	var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]');
	var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]');
	if (!timeFrom.length && !timeTo.length) {
	  timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">');
	  timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">');
	}
	timeFrom.val($(this).val() == '13' ? 8 : 14);
	timeTo.val($(this).val() == '13' ? 14 : 23);
	$(this).closest('form').append(timeFrom, timeTo);
  }).trigger('change');
});
</script>

на счет второго пункта советую просто отключить код на время данных дней

#18 delph101

delph101

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

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

Отправлено 26 Декабрь 2014 - 08:57

 Vaccina (24 Декабрь 2014 - 04:21) писал:

В конец шаблона Быстрого заказа вставьте:
<script>
$(function() {
$('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function() {
var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]');
var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]');
if (!timeFrom.length && !timeTo.length) {
	 timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">');
	 timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">');
}
timeFrom.val($(this).val() == '13' ? 8 : 14);
timeTo.val($(this).val() == '13' ? 14 : 23);
$(this).closest('form').append(timeFrom, timeTo);
}).trigger('change');
});
</script>

на счет второго пункта советую просто отключить код на время данных дней

Вставил в быстрый заказ. Но ничего не изменилось.

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

  • 1.jpg
  • 2.jpg


#19 Vaccina

Vaccina

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

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

Отправлено 27 Декабрь 2014 - 03:01

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

<script>
$(function () {
  setTimeout(function () {
	$('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function () {
	  var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]');
	  var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]');
	  if (!timeFrom.length && !timeTo.length) {
		timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">');
		timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">');
	  }
	  timeFrom.val($(this).val() == '13' ? 8 : 14);
	  timeTo.val($(this).val() == '13' ? 14 : 23);
	  $(this).closest('form').append(timeFrom, timeTo);
	}).trigger('change');
  }, 600);
});
</script>


#20 delph101

delph101

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

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

Отправлено 30 Декабрь 2014 - 21:12

 Vaccina (27 Декабрь 2014 - 03:01) писал:

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

<script>
$(function () {
setTimeout(function () {
$('[name="form[delivery][convenient_time_from]"]').attr('name', 'convenient_time').change(function () {
	 var timeFrom = $('[name="form[delivery][convenient_time_from]"][type="hidden"]');
	 var timeTo = $('[name="form[delivery][convenient_time_to]"][type="hidden"]');
	 if (!timeFrom.length && !timeTo.length) {
	 timeFrom = $('<input type="hidden" name="form[delivery][convenient_time_from]">');
	 timeTo = $('<input type="hidden" name="form[delivery][convenient_time_to]">');
	 }
	 timeFrom.val($(this).val() == '13' ? 8 : 14);
	 timeTo.val($(this).val() == '13' ? 14 : 23);
	 $(this).closest('form').append(timeFrom, timeTo);
}).trigger('change');
}, 600);
});
</script>

Не помогло. Все осталось так же.
Может быть, что-то поменять вот в этом коде в быстром заказе?

<li class="fields">
                                                                <div class="field">
                                                                        <label for="quickDeliveryConvenientDate" {% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}class="required"{% ENDIF %}>Удобное время доставки{% IF SETTINGS_ORDER_FIELDS_CONVENIENT_TIME=1 %}<em>*</em>{% ENDIF %}</label>
                                                                        <div class="input-box">
                                                                                <select name="form[delivery][convenient_time_from]">
                                                                                        <option value="13">До 14:00</option>
                                                                                        <option value="15">После 14:00</option>
                                                                                </select>
                                                                                <select name="form[delivery][convenient_time_to]" style="display: none;">
                                                                                        <option value="1"></option>
                                                                                </select>
                                                                        </div>
                                                                </div>
                                                        </li>
                        {% ENDIF %}




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

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