Здравствуйте.
Сайт, интернет-магазин. При оформлении заказа отправляется стандартное письмо, событие SALE_NEW_ORDER. В это событие добавлен еще шаблон, для админа. Но шаблон для админа должен содержать все свойства заказа, которые ввел пользователь.
Для этого в init.php прописан код:
Поддержка устаревших событий включена.
Как видно по коду, добавлены точки записи в журнал. Сделаны специально, чтобы отслеживать работу события.
Исходя из кода в массив arFields должны добавится поля "ORDER_".$arProps["CODE"] и результирующее поле PROP_INFO (именно оно используется в письме).
Шаблон письма:
Создаем заказ, смотрим в журнал - событие отработало, свойства получены, все момент записались в журнал. НО в письме значения поля PROP_INFO нет, ПУСТО! Почему так, не могу понять. Только что в журнал записал полную строку, а в письме ничего нет. Делаю запрос к b_event, получаю s:9:"PROP_INFO";s:0:"" - тоже пусто.
Сайт, интернет-магазин. При оформлении заказа отправляется стандартное письмо, событие SALE_NEW_ORDER. В это событие добавлен еще шаблон, для админа. Но шаблон для админа должен содержать все свойства заказа, которые ввел пользователь.
Для этого в init.php прописан код:
Код |
---|
AddEventHandler("sale", "OnOrderNewSendEmail", "OnOrderNewSendEmailHandler"); function OnOrderNewSendEmailHandler($orderID, &$eventName, &$arFields){ $db_props = CSaleOrderPropsValue::GetOrderProps($orderID); $added_str = ""; CEventLog::Add(array("SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "ORDER_EMAIL", "MODULE_ID" => "sale", "ITEM_ID" => $orderID, "DESCRIPTION" => "Заходим в обработчик",)); while ($arProps = $db_props->GetNext()){ if($arProps["VALUE"]){ if($arProps["TYPE"]!="LOCATION"){ $added_str .= $arProps["VALUE"]." - ".$arProps["NAME"]."<br>"; CEventLog::Add(array("SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "ORDER_EMAIL", "MODULE_ID" => "sale", "ITEM_ID" => $orderID, "DESCRIPTION" => "Добавляем ".$arProps["VALUE"]." - ".$arProps["NAME"],)); } $arFields["ORDER_".$arProps["CODE"]] = $arProps["VALUE"]; }else{ $arFields["ORDER_".$arProps["CODE"]] = ""; } } CEventLog::Add(array("SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "ORDER_EMAIL", "MODULE_ID" => "sale", "ITEM_ID" => $orderID, "DESCRIPTION" => "Результат ".$added_str,)); $arFields["PROP_INFO"] = $added_str; CEventLog::Add(array("SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "ORDER_EMAIL", "MODULE_ID" => "sale", "ITEM_ID" => $orderID, "DESCRIPTION" => $arFields["EMAIL"].": ".$arFields["PROP_INFO"],)); } |
Поддержка устаревших событий включена.
Как видно по коду, добавлены точки записи в журнал. Сделаны специально, чтобы отслеживать работу события.
Исходя из кода в массив arFields должны добавится поля "ORDER_".$arProps["CODE"] и результирующее поле PROP_INFO (именно оно используется в письме).
Шаблон письма:
Код |
---|
Пришел новый заказ с сайта #SITE_NAME#<br> <br> #ORDER_ID# - код заказа<br> #ORDER_ACCOUNT_NUMBER_ENCODE# - код заказа(для ссылок)<br> #ORDER_REAL_ID# - реальный ID заказа<br> #ORDER_DATE# - дата заказа<br> #ORDER_USER# - заказчик<br> #PRICE# - сумма заказа<br> #EMAIL# - E-Mail заказчика<br> #BCC# - E-Mail скрытой копии<br> #ORDER_LIST# - состав заказа<br> #SERVER_NAME# - URL сервера (устанавливается в настройках)<br> Свойства заказа:<br> #PROP_INFO# |
Создаем заказ, смотрим в журнал - событие отработало, свойства получены, все момент записались в журнал. НО в письме значения поля PROP_INFO нет, ПУСТО! Почему так, не могу понять. Только что в журнал записал полную строку, а в письме ничего нет. Делаю запрос к b_event, получаю s:9:"PROP_INFO";s:0:"" - тоже пусто.