20 авг 2014 | Комментариев:
0 | Просмотров: 2175
Здравстуйте. Для пользователя интернет магазина очень удобно, когда после оформления им заказа на сайте, ему приходит на почту письмо с подробной информацией о заказе. В этой статье я расскажу о том как реализовать данный функционал.
В письмо, которое приходит пользователю, будет входить следующая информация:
- ФИО заказчика
- номер заказа
- статус заказа
- состав заказа
- стоимость, как всего заказа, так и цена отдельных товаров в нем
- стоимость и способ доставки
- необходимые ссылки: ссылка на сайт, ссылка на личный кабинет пользователя
- сопутствующая информация, которую вы хотите сообщить покупателю
Итак, первое что нам нужно сделать это создать тип почтового события и соответствующий этому типу почтовый шаблон.
Зайдем в административном разделе Битрикса в раздел настройки –> почтовые события –> типы почтовых событий, нажмем «Добавить тип». Заполним все поля как показано на картинке:

Далее перейдем на вкладку «Почтовые шаблоны» и создадим новый почтовый шаблон, нажав кнопку «Добавить шаблон»:

Текст письма может быть любым, внизу есть список переменных, которые вы можете использовать в данном шаблоне.
Далее нужно перейти в раздел «Контент» –> «Файлы и папки». Зайти в папку www.ваш_сайт.ru//bitrix/php_interface и в файл init.php вставить следующий код (если такого файла нет создать!):
<?
// Письмо пользователю при оформлении нового заказа
AddEventHandler("sale", "OnOrderAdd", Array("mail_new", "OnOrderAdd_mail"));
class mail_new
{
function OnOrderAdd_mail($ID, $val)
{
// Получаем имя и мэйл пользователя
$rsUser = CUser::GetByID($val["USER_ID"]);
$arUser = $rsUser->Fetch();
$arUser_name = $arUser["LAST_NAME"]." ".$arUser["NAME"];
$arUser = $arUser["EMAIL"];
// Получаем Содержимое заказа
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"DELAY" => "N",
"CAN_BUY" => "Y",
"ORDER_ID" => "NULL"
),
false,
false,
array()
);
$zak = "Корзина заказа:<br /><table border='1'>";
$zak = $zak."<tr><td align='center'>Товар</td><td align='center'>Цена</td><td align='center'>Кол-во</td><td align='center'>Сумма</td></tr>";
while ($arItem = $dbBasketItems->Fetch())
{
$st = (int)$arItem["QUANTITY"]*$arItem["PRICE"];
$kol_vo = (int)$arItem["QUANTITY"];
$zak = $zak."<tr><td align='left'>"."<a href='".$arItem["DETAIL_PAGE_URL"]."'>".$arItem["NAME"]."</a></td><td align='left'>".$arItem["PRICE"]."</td><td align='left'>".$kol_vo."</td><td align='left'>".$st."</td></tr>";
}
$arDeliv = CSaleDelivery::GetByID($val["DELIVERY_ID"]);
$zak = $zak."<tr><td align='left' colspan='3'><b>Доставка: </b>".$arDeliv["NAME"]."</td><td align='left'>".$val["PRICE_DELIVERY"]."</td></tr>";
$zak = $zak."</table>";
$arEventFields = array(
"ORDER_ID" => $ID,
"SOSTAV" => $zak,
"ORDER_USER" => $arUser_name,
"EMAIL" => $arUser,
"BCC" => $arUser,
"PRICE" => (int)$val["PRICE"]." руб",
"SALE_EMAIL" => "info@yoursite.ru",
);
CEvent::SendImmediate("SALE_NEW_ORDER", s1, $arEventFields, "N", 11);
}
}
?>
В функции «CEvent::SendImmediate(«SALE_NEW_ORDER», s1, $arEventFields, «N», 11);» :
SALE_NEW_ORDER – тип почтового события
s1 – идентификатор сайта
11 – идентификатор почтового шаблона
Эти переменные вам нужно вставить свои!
Вот и все, теперь когда покупатель сделает заказ на вашем сайте, ему придет письмо примерно такого содержания:

Источник: http://blog-o-bitrix.ru