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


Как Сделать Электронную Почту Обязательной Для Заполнения?


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

#1 hohot

hohot

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

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

Отправлено 30 Июнь 2022 - 22:04

Здравствуйте!
Помогите сделать электронную почту обязательной для заполнения при оформлении заказа.
Сам, чет туплю, не осилил...
И еще при оформлении это поле отображается как "Почта", а хотелось бы чтоб было: "Электронная почта"

1.png

#2 Vaccina

Vaccina

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

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

Отправлено 01 Июль 2022 - 01:05

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

Зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
   								 <div class="form__field email">
   									 <label for="sites_client_email" {% IF ORDER_FORM_CONTACT_WANT_REGISTER %}class="required"{% ENDIF %}><span>Ваш E-mail</span><em>*</em></label>
   									 <input id="sites_client_email" type="email" name="form[contact][email]" value="{ORDER_FORM_CONTACT_EMAIL}" maxlength="255" class="form__input" type="text" placeholder="Почта" {% IF ORDER_FORM_CONTACT_WANT_REGISTER %}required{% ENDIF %}/>
   								 </div>
             
замените на:
   								 <div class="form__field email">
   									 <label for="sites_client_email" class="required"><span>Ваш E-mail</span><em>*</em></label>
   									 <input id="sites_client_email" type="email" name="form[contact][email]" value="{ORDER_FORM_CONTACT_EMAIL}" maxlength="255" class="form__input" type="text" placeholder="Электронная почта" required/>
   								 </div>


#3 hohot

hohot

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

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

Отправлено 02 Июль 2022 - 21:35

Спасибо большое!

#4 hohot

hohot

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

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

Отправлено 02 Июль 2022 - 22:17

И вот еще аномалию обнаружил пока процессы заказа тестировал.
Не получается оформить заказ через кнопку "Быстрая покупка"
Процесс:
- на странице товара нажимаем кнопку "быстрая покупка"
- Открывается окно в котором сверху информация, что товар добавлен в корзину и ниже форма заказа.
выбор доставки, оплаты, заполнение фио, адрес итд...
- выбираем доставку, выбираем оплату, заполняем адрес, индекс, фио, почту. телефон...
- нажимаем кнопку внизу "Оформить заказ" и.... ничего не происходит, заказ не создается.

Через корзину заказ оформляется нормально, а вот тут, через "Быструю покупку", почему то не получается
Это только у меня или общая проблема?
Помогите пожалуйста разобраться
Номер аккаунта:SL-252393

#5 hohot

hohot

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

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

Отправлено 07 Июль 2022 - 08:26

Просмотр сообщенияhohot (02 Июль 2022 - 22:17) писал:

И вот еще аномалию обнаружил пока процессы заказа тестировал.
Не получается оформить заказ через кнопку "Быстрая покупка"
Процесс:
- на странице товара нажимаем кнопку "быстрая покупка"
- Открывается окно в котором сверху информация, что товар добавлен в корзину и ниже форма заказа.
выбор доставки, оплаты, заполнение фио, адрес итд...
- выбираем доставку, выбираем оплату, заполняем адрес, индекс, фио, почту. телефон...
- нажимаем кнопку внизу "Оформить заказ" и.... ничего не происходит, заказ не создается.

Через корзину заказ оформляется нормально, а вот тут, через "Быструю покупку", почему то не получается
Это только у меня или общая проблема?
Помогите пожалуйста разобраться
Номер аккаунта:SL-252393

Существует ли какое то решение проблемы?

#6 Vaccina

Vaccina

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

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

Отправлено 09 Июль 2022 - 04:47

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите:
// Быстрый заказ
function quickOrder(formSelector) {
	// Находим форму, которую отправляем на сервер, для добавления товара в корзину
	var formBlock = $($(formSelector).get(0));
	// Проверка на существование формы отправки запроса на добавление товара в корзину
	if(1 > formBlock.length || formBlock.get(0).tagName != 'FORM') {
		alert('Не удалось найти форму добавления товара в корзину');
		return false;
	}
	// Получаем данные формы, которые будем отправлять на сервер
	var formData = formBlock.serializeArray();
	// Сообщаем серверу, что мы пришли через ajax запрос
	formData.push({name: 'ajax_q', value: 1});
	// Так же сообщим ему, что нужно сразу отобразить форму быстрого заказа
	formData.push({name: 'fast_order', value: 1});
	// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
	$.ajax({
		type	: "POST",
		cache	  : false,
		url		  : formBlock.attr('action'),
		data		: formData,
		success: function(data) {
			$.fancybox.open(data, {
				keyboard: false,
				baseClass: "fastOrder",
				afterShow: function(){
		  showPass();
		  orderScripts();
		  orderScriptsSelect();
		  coupons();
		  preload();
		  $('.fastOrder__form').validate({
			errorPlacement: function(error, element) { }
		  });
				}
			})

		}
	});
	return false;
}
          
замените на:
// Быстрый заказ
function quickOrder(formSelector) {
	// Находим форму, которую отправляем на сервер, для добавления товара в корзину
	var formBlock = $($(formSelector).get(0));
	// Проверка на существование формы отправки запроса на добавление товара в корзину
	if(1 > formBlock.length || formBlock.get(0).tagName != 'FORM') {
		alert('Не удалось найти форму добавления товара в корзину');
		return false;
	}
	// Получаем данные формы, которые будем отправлять на сервер
	var formData = formBlock.serializeArray();
	// Сообщаем серверу, что мы пришли через ajax запрос
	formData.push({name: 'ajax_q', value: 1});
	// Так же сообщим ему, что нужно сразу отобразить форму быстрого заказа
	formData.push({name: 'fast_order', value: 1});
	// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
	$.ajax({
		type	: "POST",
		cache	  : false,
		url		  : formBlock.attr('action'),
		data		: formData,
		success: function(data) {
			$.fancybox.open(data, {
				keyboard: false,
				baseClass: "fastOrder",
				afterShow: function(){
		  showPass();
		  orderScripts();
		  orderScriptsSelect();
		  coupons();
		  preload();
		  $('.fastOrder__form').validate({
			errorPlacement: function(error, element) { }
		  });

				}
			})
			// Валидация формы на странице оформления заказа
			$(".total__buttons button, #makeOrder").on('click', function(){
				var form = $(".fastOrder__form");
				form.validate({
					errorPlacement: function(error, element) { }
				});
				form.submit();
				return false;
			});
			// Выключение кнопки оформления заказа если не все поля заполнены
			$(".fastOrder__form [required]").blur(function(){
				if($('.fastOrder__form').valid()) {
					$(".total__buttons button").removeClass('disabled');
					$(".total__buttons button").attr('data-tooltip', 'Оформить заказ');
					$("#makeOrder").removeClass('disabled');
					$("#makeOrder").attr('data-tooltip', 'Оформить заказ');
				} else {
					$(".total__buttons button").addClass('disabled');
					$(".total__buttons button").attr('data-tooltip', 'Заполните все поля');
					$("#makeOrder").addClass('disabled');
					$("#makeOrder").attr('data-tooltip', 'Заполните все поля');
				}
			});
			// Выключение кнопки оформления заказа если не все поля заполнены
			$(function(){
				if($('.fastOrder__form').valid()) {
					$(".total__buttons button").removeClass('disabled');
					$(".total__buttons button").attr('data-tooltip', 'Оформить заказ');
					$("#makeOrder").removeClass('disabled');
					$("#makeOrder").attr('data-tooltip', 'Оформить заказ');
				}else{
					$(".fastOrder__form input, .fastOrder__form textarea, .fastOrder__form select").removeClass('error');
				}
			});
		}
	});
	return false;
}


#7 hohot

hohot

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

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

Отправлено 11 Июль 2022 - 00:37

Спасибо!
Быстрый заказ заработал, но появилась еще одна проблема (или она уже была, но заметил вот только что).
Быстрый заказ теперь работает, но только если оформлять заказ на одну единицу (штуку) товара.
Если на странице товара нажать на плюсик прибавки количества, то вылезает предупреждение об ошибке:
2022-07-11_00-05-57.png 4.png
Если сразу на странице товара количество не менять, то быстрый заказ оформляется без проблем.
Если пытаться поменять количество то - ошибка, как на плюсе, так и на минусе.
Цифра количества меняется, но если нажать быстрый заказ, то оформляется заказ все равно только на одну единицу товара.
Далее потестировал разные варианты связанные с изменением количества.
Оказалось, что если на странице товара меняем количество с индикацией вышеописанной ошибки, и пытаемся это количество просто закинуть в корзину нажатием кнопки "в корзину",
то в корзину падает все равно только одна единица товара и с каждым нажатием кнопки "В корзину" в нее падает по одной единице, хотя количество изменено на большее.
Если добавить одну единицу в корзину и уже в корзине менять количество, то все корректно, а вот если пытаться закинуть, к примеру три единицы товара, то попадает в корзину только одна.
Извиняюсь, если несколько сумбурно изложил, старался как можно понятнее.





2.png

#8 Vaccina

Vaccina

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

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

Отправлено 12 Июль 2022 - 02:43

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите:
// Изменение кол-ва в карточке
function prodQty(){
	$('.productView__qty .quantity').change(function(){
		var t = $(this);
		// Количество
		var val = parseInt(t.val());
		// Если вводят 0 то заменяем на 1
		if(val < 1){
			t.val(1);
			val = 1;
		}
		// Проверка максимальныго остатка
		var max = parseInt(t.attr('max'));
		if(val > max){
			t.val(max);
			val = max;
			new Noty({
				text: '<div class="noty__addto"><div class="noty__message">Внимание! Вы пытаетесь положить в корзину товара больше, чем есть в наличии</div></div>',
				layout:"bottomRight",
				type:"warning",
				easing:"swing",
				animation: {
					open: 'animated fadeInUp',
					close: 'animated fadeOutDown',
					easing: 'swing',
					speed: 400
				},
				timeout:"2000",
				progressBar:true
			}).show();
		}
		// Обновление кол-ва для функций "Добавить"
		goodsModView.find('.goodsDataMainModificationId').val($(this).val());
		// Цена товара без изменений
		var price = parseInt($('.productView__price .price__now').attr('content'));
		var newPrice = 0;
		// Проверяем наличие добавленных товаров вместе с основным
		if (goodsModView.find('.productView__form [class^="goodsID-"]').length) {
			goodsModView.find('.productView__form [class^="goodsID-"]').each(function(){
				// Сумма всех добавленных товаров
				newPrice += parseInt($(this).attr('data-price'))
			});
		}
		// Считаем новую сумму товара с учетом добавленных
		var multi = String(val * price + newPrice);
		// Обновляем новую сумму
		goodsModView.find('.productView__price .price__now').attr('data-price', multi);
		goodsModView.find('.productView__price .price__now').find('.num').text(addSpaces(multi));
	});
}
          
замените на:
// Изменение кол-ва в карточке
function prodQty($container){
	var goodsModView = $container || $('#main .productViewBlock')
	goodsModView.find('.productView__qty .quantity').change(function(){
		var t = $(this);
		// Количество
		var val = parseInt(t.val());
		// Если вводят 0 то заменяем на 1
		if(val < 1){
			t.val(1);
			val = 1;
		}
		// Проверка максимальныго остатка
		var max = parseInt(t.attr('max'));
		if(val > max){
			t.val(max);
			val = max;
			new Noty({
				text: '<div class="noty__addto"><div class="noty__message">Внимание! Вы пытаетесь положить в корзину товара больше, чем есть в наличии</div></div>',
				layout:"bottomRight",
				type:"warning",
				easing:"swing",
				animation: {
					open: 'animated fadeInUp',
					close: 'animated fadeOutDown',
					easing: 'swing',
					speed: 400
				},
				timeout:"2000",
				progressBar:true
			}).show();
		}
		// Обновление кол-ва для функций "Добавить"
		goodsModView.find('.goodsDataMainModificationId').val($(this).val());
		// Цена товара без изменений
		var price = parseInt(goodsModView.find('.productView__price .price__now').attr('content'));
		var newPrice = 0;
		// Проверяем наличие добавленных товаров вместе с основным
		if (goodsModView.find('.productView__form [class^="goodsID-"]').length) {
			goodsModView.find('.productView__form [class^="goodsID-"]').each(function(){
				// Сумма всех добавленных товаров
				newPrice += parseInt($(this).attr('data-price'))
			});
		}
		// Считаем новую сумму товара с учетом добавленных
		var multi = String(val * price + newPrice);
		// Обновляем новую сумму
		goodsModView.find('.productView__price .price__now').attr('data-price', multi);
		goodsModView.find('.productView__price .price__now').find('.num').text(addSpaces(multi));
	});
}


#9 hohot

hohot

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

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

Отправлено 12 Июль 2022 - 12:15

Огромное спасибо! Вы мне очень помогли!!!




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

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