Jump to content
Sign in to follow this  
vlad4298

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

Recommended Posts

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

 

Проблема следующая: убрал обязательный ввод почты при заказе. Теперь не приходит уведомление о заказе ко мне на 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 - не работает. Полагаю, нужно куда-то в другое место код вставлять. Сможете подсказать куда?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

OC 2.0

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

при нажатии кнопки перехода к следующему шагу произвести проверку на заполнение поля 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');

}

Edited by AlexDW

Share this post


Link to post
Share on other sites

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') . "'
...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

было
>>

стало

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

в логах что?

Share this post


Link to post
Share on other sites

в логах что?

 
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;
				}
Edited by vlad4298

Share this post


Link to post
Share on other sites

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

...

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by afwollis

Share this post


Link to post
Share on other sites

в логах что?

 

Логи выше.

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.