(c) Павел Беляев

При использовании статей с сайта добавляйте в копирайт © Блог Павла Беляева http://pavelb.ru

среда, 20 октября 2010 г.

Отправка уведомления о заказе админу в Virtuemart, если покупатель не указал свой email

Если делать в своем магазине процедуру покупки без всяких регистраций и с минимум усилий то скорей всего вам захочется сделать поле e-mail в данных пользователя необязательным, ведь не все имеют свою электронную почту да и не все хотят ее оставлять, вполне достаточно написать в регистрационной форме ФИО и Телефон, а e-mail по желанию.

Но вот ведь незадача! Если пользователь не введет своего емэйла, то и админу тоже не прийдет письмо с уведомлением о заказе. А почему? Сейчас попытаюсь разъяснить.

Открываем файл administrator/components/com_virtuemart/classes/ps_checkout.php

примерно на строках 2160-2162 находим такие две строки
$shopper_mail = vmMail( $from_email, $mosConfig_fromname, $shopper_email, $shopper_subject, $shopper_mail_Body, $shopper_mail_AltBody, true, null, null, $EmbeddedImages);
 
$vendor_mail = vmMail( $shopper_email, $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);



Наверно стоит пояснить что тут происходит
В первой строке отправляется почта покупателю, а во второй строке почта отправляется продавцу, но при этом в качестве отправителя указывается почтовый ящик покупателя, но если он пустой, то письмо без отправителя не может отправиться.


Удаляем эти две строки и вместо них вставляем следующее содержимое


if (!$shopper_email)

{
$vendor_mail = vmMail( "robot@domain.ru", $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);
}


else
{
$shopper_mail = vmMail( $from_email, $mosConfig_fromname, $shopper_email, $shopper_subject, $shopper_mail_Body, $shopper_mail_AltBody, true, null, null, $EmbeddedImages);


$vendor_mail = vmMail( $shopper_email, $shopper_name, $vendor_email, $vendor_subject, $vendor_mail_Body, $vendor_mail_AltBody, true, null, null, $EmbeddedImages);

}


Где robot@domain.ru - адрес, от которого будет отправляться уведомление админу

7 комментариев:

Анонимный комментирует...

Спасибо!

Nik комментирует...

Огромное спасибо, все работает. Только пришлось зайти в "управление полями, заполняемыми пользователем" и сделать поле e-mail необязательным.

Анонимный комментирует...

Благодарю!
Метод прекрасно работает

Анонимный комментирует...

А у меня почемуто не работает...если клиент не вводит эмаил то письмо менеджеру всеравно не приходит...что делать? как быть?

Павел Беляев комментирует...

скиньте мне на мыло ваш файл administrator/components/com_virtuemart/classes/ps_checkout.php

исправлю, ну и не откажусь от благодарности в денежном эквиваленте за оказанную услугу, хотя могу сделать и бесплатно.

pavelbbb@gmail.com

Екатерина Поскребаева комментирует...

не найду этот путь и конечный файл, где поменять код и поставить почту. У меня virtuemart 2.0.14

Павел Беляев комментирует...

Екатерина, а мыло в новой версии по прежнему не отправляется, если покупатель свое не указал?

Отправить комментарий