Перейти к содержанию
vlad4298

[Решено] Получение e-mail адреса

Рекомендуемые сообщения

Добрый вечер, заранее спасибо за помощь, кто сможет помочь!

 

Проблема следующая: убрал обязательный ввод почты при заказе. Теперь не приходит уведомление о заказе ко мне на e-mail. Захотел решить задачу следующим образом: при "невписывании" почты, она автоматически будет придумана. Написал банальный код:

<script type="text/javascript">

var no_mail = "user_with_no@mail.com";

	function empty_mail() {
		if (document.getElementById('input-payment-email').value==''){		
		document.getElementById('input-payment-email').value=no_mail
		} 
	};

</script>

Вставил его в checkout.tpl - не работает. Полагаю, нужно куда-то в другое место код вставлять. Сможете подсказать куда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну написали вы функцию, а где она инициализируется ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного не понял. email не указывается при заказе без регистрации.

OC 2.0

Сможете поточнее, пожалуйста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

имелось ввиду - каким образом и где происходит вызов вашей функции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как раз это я и хотел бы узнать. Написал функцию, а куда её вставлять не знаю.

Я так понимаю, это должно быть реализовано в guest.php. Мой код - javascript. Нужно переписывать или можно как-то вставить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как раз это я и хотел бы узнать. Написал функцию, а куда её вставлять не знаю.

достойно раздела "Анекдоты" :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю, это должно быть реализовано в guest.php. Мой код - javascript. Нужно переписывать или можно как-то вставить?

Значит это надо написать в том же quest.php и желательно тоже на php

Там где идет обработка POST['email']

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все несколько проще

при нажатии кнопки перехода к следующему шагу произвести проверку на заполнение поля emai перед отправкой данных в контроллер

если поле пустое - подставить в поле нужные данные, например nomail@nomail.nomail

(лучше конечно использовать реально существующий ящик - иначе постоянно от хостера будут падать письма "адресат не существует")

 

копайте файл catalog\view\theme\имя вашей темы\template\checkout\checkout.tpl после строки

$(document).delegate('#button-guest', 'click', function() {

 

добавьте

if !( $('#input-payment-email').val()) {

$('#input-payment-email').val('nomail@nomail.nomail');

}

Изменено пользователем AlexDW

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

vlad4298, как вариант:

в /catalog/model/checkout/order.php

1.

public function addOrder($data) {
...
email = '" . $this->db->escape($data['email']) . "'
...
>>

public function addOrder($data) {
...
email = '" . (isset($data['email']) && !empty($data['email'])) ? $this->db->escape($data['email']) : $this->db->escape('no-reply@your-domain.tld') . "'
...

2.

public function editOrder($order_id, $data) {
...
email = '" . $this->db->escape($data['email']) . "'
...
>>

public function editOrder($order_id, $data) {
...
email = '" . (isset($data['email']) && !empty($data['email'])) ? $this->db->escape($data['email']) : $this->db->escape('no-reply@your-domain.tld') . "'
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно по две правки сделать в обе функции, я прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AlexDW, попробовал ваш вариант. Тоже показался вполне реальным. Но видимо получение

#input-payment-email
происходит не в checkout.tpl, так как при добавлении в код просто напросто все вкладки становятся неактивными. Пробовал прописать тоже самое в guest.tpl - тормозит после нажатия клавиши "продолжить" на первом шаге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет. всего два изменения.

было
>>

стало

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал, как вы сказали. Не приходит вообще заказ в админку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в логах что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в логах что?

 
2015-11-04 23:19:17 - PHP Warning:  mysqli::query(): Empty query in data/www/loveyou.ua/system/library/db/mysqli.php on line 18
 
Вот что по этому адресу:
public function query($sql) {
		$query = $this->link->query($sql);

		if (!$this->link->errno) {
			if ($query instanceof \mysqli_result) {
				$data = array();

				while ($row = $query->fetch_assoc()) {
					$data[] = $row;
				}
Изменено пользователем vlad4298

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все несколько проще

...

чуть промахнулся, строку измените на

if (!$('#input-payment-email').val()) {

 

так при оформлении заказа без регистрации (guest) если не заполнить поле email и нажать далее - поле будет заполнено автоматически как nomail@nomail.nomail

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое! Получилось.

Хотя самое он вписывает почту ещё до того, как переходит к следующему шагу. Но это я решил вот так вот:

$('#input-payment-email').css('color','#fff');

Изменено пользователем afwollis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в логах что?

 

Логи выше.

 

Alex подсказал дельную идею. Однако, если сможете помочь с вашей задумкой, то, наверное, воспользуюсь ей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.