Если делать в своем магазине процедуру покупки без всяких регистраций и с минимум усилий то скорей всего вам захочется сделать поле e-mail в данных пользователя необязательным, ведь не все имеют свою электронную почту да и не все хотят ее оставлять, вполне достаточно написать в регистрационной форме ФИО и Телефон, а e-mail по желанию.
Но вот ведь незадача! Если пользователь не введет своего емэйла, то и админу тоже не прийдет письмо с уведомлением о заказе. А почему? Сейчас попытаюсь разъяснить.
Открываем файл administrator/components/com_virtuemart/classes/ps_checkout.php
примерно на строках 2160-2162 находим такие две строки
Наверно стоит пояснить что тут происходит
В первой строке отправляется почта покупателю, а во второй строке почта отправляется продавцу, но при этом в качестве отправителя указывается почтовый ящик покупателя, но если он пустой, то письмо без отправителя не может отправиться.
Удаляем эти две строки и вместо них вставляем следующее содержимое
Где robot@domain.ru - адрес, от которого будет отправляться уведомление админу
Но вот ведь незадача! Если пользователь не введет своего емэйла, то и админу тоже не прийдет письмо с уведомлением о заказе. А почему? Сейчас попытаюсь разъяснить.
Открываем файл 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 - адрес, от которого будет отправляться уведомление админу
8 комментариев:
Спасибо!
Огромное спасибо, все работает. Только пришлось зайти в "управление полями, заполняемыми пользователем" и сделать поле e-mail необязательным.
Благодарю!
Метод прекрасно работает
А у меня почемуто не работает...если клиент не вводит эмаил то письмо менеджеру всеравно не приходит...что делать? как быть?
скиньте мне на мыло ваш файл administrator/components/com_virtuemart/classes/ps_checkout.php
исправлю, ну и не откажусь от благодарности в денежном эквиваленте за оказанную услугу, хотя могу сделать и бесплатно.
pavelbbb@gmail.com
не найду этот путь и конечный файл, где поменять код и поставить почту. У меня virtuemart 2.0.14
Екатерина, а мыло в новой версии по прежнему не отправляется, если покупатель свое не указал?
версия 3.5 мыло не отправляется файл ps_checkout.php отсутствует =(
Отправить комментарий