Virtuemart уведомить меня waiting_list Часть 2


В прошлой статье Virtuemart уведомить меня или как смотреть waiting_list мы рассмотрели как можно смотреть список уведомляемых покупателей. Но порой неплохо было бы более оперативно получать информацию о таких заказах и иметь возможность связаться с потенциальным покупателем по телефону. Поэтому здесь мы рассмотрим как к функции Virtuemart уведомить меня добавить получение администратором письма с уведомлением  о таком заказе и как дать возможность пользователю вместе с полем «контактный e-mail» вводить свой контактный телефон.

Добавим новое поле для ввода «Контактный телефон»

Редактируем файл /components/com_virtuemart/themes/default/templates/pages/shop.waiting_list.tpl.php

Меняем строку 

<input type="text" name="notify_email" value="<?php echo $my->email ?>" />

На примерно такую (к полю E-mail добавляем поле Контактный телефон):

Контактный телефон:&amp;nbsp;<input type="text" name="notify_phone" value="" /><br />
Контактный E-mail:&amp;nbsp;<input type="text" name="notify_email" value="<?php echo $my->email ?>" />

Далее редактируем файл /administrator/components/com_virtuemart/classes/zw_waiting_list.php

Находим блок

$q = "INSERT INTO #__{vm}_waiting_list (product_id, user_id, notify_email)";
$q .= " VALUES ('";
$q .= $d["product_id"] . "','";
$q .= $auth['user_id'] . "','";
$q .= $d["notify_email"]. "')";

и меняем его на

$q = "INSERT INTO #__{vm}_waiting_list (product_id, user_id, notify_email, notify_phone)";
$q .= " VALUES ('";
$q .= $d["product_id"] . "','";
$q .= $auth['user_id'] . "','";
$q .= $d["notify_email"]."','";
$q .= $d["notify_phone"] . "')";

Теперь наше поле с телефоном добавляется в базу, поэтому НЕ ЗАБЫВАЕМ в таблицу jos_vm_waiting_list добавить новое поле notify_phone

Чтобы наш телефон отображался в нашем waiting_list в админке (как сделать waiting_list читайте в прошлой статье) редактируем файл /administrator/components/com_virtuemart/html/product.waiting_list.php

Находим строчку

<td>".$row[notify_email]."</td>

И меняем ее на

<td>".$row[notify_email]."<br />".$row[notify_phone]."</td>

Теперь в нашем листе уведомлений будет показываться контактный телефон.

Пол дела сделано, теперь осталось добавить уведомление на e-mail администратора магазина о потенциальном покупателе.

Для этого редактируем файл /administrator/components/com_virtuemart/classes/zw_waiting_list.php

Находим блок

function add(&amp;$d) {
global $auth;
$db = new ps_DB;

И добавляем после него следующий код, который будет отправлять письмо с уведомлением

$to = "admin@ВАШ ДОМЕН.ru";   # АДРЕС КУДА БУДУТ ПРИСЫЛАТЬСЯ УВЕДОМЛЕНИЯ
$subject = "Под заказ";
$body = "Покупатель заказал ID: " .  $d['product_id'] . "rn" . "URL: " .
"http://ВАШ ДОМЕН/index.php?option=com_virtuemart&amp;Itemid=8&amp;&amp;flypage=flypage.tpl&amp;lang=ru&amp;limitstart=0&amp;page=shop.product_details&amp;product_id=". $d['product_id']."rn".
"Контактный телефон:".$d['notify_phone']."rn".
"Контактный e-mail: ".$d['notify_email'];
$headers = "From: admin@ВАШ ДОМЕН.rurn" . "X-Mailer: php";
mail($to, $subject, $body, $headers);

Задача выполнена, новое поле добавлено, письмо с уведомлением приходит.

Комментарии

14 комментариев

  • Только вот кодировка письма в Outloke корявая получается. Где подлечить можно?

  • Помогите пожалйста настроить уведомление о предзаказе.
    Все сделал как написано в статье.
    Выдается ошибка

    Warning: mail(): SMTP server response: 503 5.5.1 RCPT first.

    Заранее спасибо!

  • @Андрей
    Отправляется через почтовую программу на вашем сервере скорее всего sendmail, а не через php. А о том Как отправлять через удаленный smtp сервер, будь то gmail, yandex или какой либо другой сервер, горы информации в интернете:) если действительно не сможете найти, могу лично найти вам пару ссылочек:)

  • @Владимир
    Попробуйте поиграть с заголовком письма. В нашем примере переменная $headers.
    Н-р вот так: $header=»Content-type: text/html; charset=»windows-1251″»;

  • Письмо не приходит, вот что приходит от заказчика:

    This is the mail system at host mx15.ukraine.com.ua.

    I’m sorry to have to inform you that your message could not
    be delivered to one or more recipients. It’s attached below.

    For further assistance, please send mail to postmaster.

    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.

    The mail system

    : mail for XXXXXXXXXXX.com.ua loops back to myself

    Final-Recipient: rfc822; support@XXXXX.com.ua
    Original-Recipient: rfc822;support@XXXXXX.com.ua
    Action: failed
    Status: 5.4.6
    Diagnostic-Code: X-Postfix; mail for XXXXXXXX.com.ua loops back to myself

    ———- Пересылаемое сообщение ———-
    From: admin@XXXXXXX.com.ua
    To: support@XXXXXXXX.com.ua
    Date: Mon, 14 Nov 2011 02:08:09 +0200
    Subject: ????? ??????????
    Покупатель заказал ID: 49
    URL: http ://XXXXXXXXXX.com.ua/index.php?option=com_virtuemart&Itemid=8&&flypage=flypage.tpl&lang=ru&limitstart=0&page=shop.product_details&product_id=49
    Контактный телефон:XXXXXXXXX
    Контактный e-mail: XXXXXXXXXXX@gmail.com

  • Если я правильно понял по логу который вам приходит, то это письмо не от заказчика а от вашего же почтовика, обратитесь к вашему хостеру и спросите почему через его почтовик не проходит такого вида почта

  • Спасибо, проблема решилась следующим вариантом:

    $name = «xxxxxxx.com.ua»;
    $to = «support@».$name; # АДРЕС КУДА БУДУТ ПРИСЫЛАТЬСЯ УВЕДОМЛЕНИЯ
    $subject = «xxxxxxxx.com.ua *** NEW ORDERS! *** ID:». $d[‘product_id’];
    $body = «Покупатель заказал товар под номером ID: » . $d[‘product_id’] . «rnrn» . «Ссылка на товар URL: » .
    «http://».$name.»/index.php?option=com_virtuemart&Itemid=8&&flypage=flypage.tpl&lang=ru&limitstart=0&page=shop.product_details&product_id=». $d[‘product_id’].»rnrn».
    «Имя: «.$d[‘notify_name’].»rn».
    «Контактный телефон: «.$d[‘notify_phone’].»rn».
    «Контактный e-mail: «.$d[‘notify_email’];
    $headers = «From: «.$d[‘notify_email’].»rn» . «X-Mailer: php»;
    $headers .= «Content-type:text/html; charset = utf-8»;
    mail($to, $subject, $body, $headers);

  • Подскажите пожалуйста, как в новом окне обратиться к переменной $product_name из предыдущего. А точнее в файле shop.waiting_list.tpl.php использовать переменную $product_name из файла flypage.tpl.php. Я хотел бы вставить эту переменную, чтобы при нажатии кнопки уведомить — в новом окне отображалось бы название товара, который пользователь хотел бы заказать.

  • Установлено: Joomla 1.5.22, CSVI VirtueMart 1.9, VirtueMart 1.1.4.

    Когда на складе товара «0», появляется кнопка «уведомить меня!», человек оставляет e-mail для уведомления, после того как вручную изменить количество товара > 0, соответственно ему отправляется уведомление и все хорошо.
    При импортировании товара через CSVI VirtueMart 1.9, соответственно загружаем количество товара >0, а уведомление не отправляется, подскажите кто решил данную проблему?

  • Доброго времени суток!
    А никто не знает как реализовать то же самое на virtuemart 2.0?

Добавить комментарий

Ваш адрес email не будет опубликован.

Sidebar