При заказе в один клик(при обычном заказе(компонент sale.order.ajax) все нормально) не формируются данные из создаваемого макроса. Для модификации почтового шаблона использовали в init.php событие AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails"); для создания(новых макросов) и подстановки нужных полей. В версии ядра 15.5 содержимое письмо формировалось нормально, а как обновились до 16.5 версии письмо приходит без данных из макроса(#ORDER_LIST#), формируюшегося при событии переменной AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails")
:
В ходе экспериментов выяснилось, что к параметру функции переменной &$arFields ничего не присваивается и поэтому приходит письмо с пустыми данными из макроса #ORDER_LIST#. В чем может быть дело?
PS При формировании обычного заказа(компонент sale.order.ajax) письмо формируется нормально и данные с макроса подставляются, проблема только при заказе в один клик. Кстати в 15 версии ядра все работало хорошо и письмо приходило заполненное. Кстати ещё один фактор. Был осуществлен перенос сайта на другой хостинг и там уже обновили версию ядра
----
Вот ещё Такая деталь,
в функции bxModifySaleMails ввожу переменную $test со значением 'тест' и присваиваю $arFields["ORDER_LIST"]=$test; письмо приходит нормально(даже при заказе в один клик ) с содержимым макроса (тест). Если же сделать так $arFields["ORDER_LIST"]=$product_nam; , то письмо пустое(содержимое макроса #ORDER_LIST#). В то же время при этом $product_nam не пустая переменная , так как я проверял и в ней выводится значение echo $product_nam;(то имя товара которое положили в корзину).
Почему же тогда не присваивается $arFields["ORDER_LIST"]=$product_nam;, хотя $product_nam не пустая переменная.
PS Мои догадки, может дело в кавычках, ведь переменная $test её значение обрамлено в кавычки, а $product_nam нет. Тогда как быть? Может связано с переносом сайта на другой хостинг(ведь до этого всё работало и письма заполнялись содержимым макроса #ORDER_LIST#) и на новом хостинге не включен какой-то параметр. Что делать?
Вот часть функции в init.php , здесь формируется макрос для почтового шаблона #ORDER_LIST#
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$test = 'тест';
CModule::IncludeModule("sale");
$strOrderList = "";
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("ID", "NAME")
);
//$arFields["ORDER_LIST"] =count($dbBasketItems);
while ($arBasketItems = $dbBasketItems->Fetch())
{
$product_nam .=$arBasketItems["NAME"];
}
//echo $product_nam;
$arFields["ORDER_LIST"]=$product_nam;
return true;
}
:
В ходе экспериментов выяснилось, что к параметру функции переменной &$arFields ничего не присваивается и поэтому приходит письмо с пустыми данными из макроса #ORDER_LIST#. В чем может быть дело?
PS При формировании обычного заказа(компонент sale.order.ajax) письмо формируется нормально и данные с макроса подставляются, проблема только при заказе в один клик. Кстати в 15 версии ядра все работало хорошо и письмо приходило заполненное. Кстати ещё один фактор. Был осуществлен перенос сайта на другой хостинг и там уже обновили версию ядра
----
Вот ещё Такая деталь,
в функции bxModifySaleMails ввожу переменную $test со значением 'тест' и присваиваю $arFields["ORDER_LIST"]=$test; письмо приходит нормально(даже при заказе в один клик ) с содержимым макроса (тест). Если же сделать так $arFields["ORDER_LIST"]=$product_nam; , то письмо пустое(содержимое макроса #ORDER_LIST#). В то же время при этом $product_nam не пустая переменная , так как я проверял и в ней выводится значение echo $product_nam;(то имя товара которое положили в корзину).
Почему же тогда не присваивается $arFields["ORDER_LIST"]=$product_nam;, хотя $product_nam не пустая переменная.
PS Мои догадки, может дело в кавычках, ведь переменная $test её значение обрамлено в кавычки, а $product_nam нет. Тогда как быть? Может связано с переносом сайта на другой хостинг(ведь до этого всё работало и письма заполнялись содержимым макроса #ORDER_LIST#) и на новом хостинге не включен какой-то параметр. Что делать?
Вот часть функции в init.php , здесь формируется макрос для почтового шаблона #ORDER_LIST#
function bxModifySaleMails($orderID, &$eventName, &$arFields)
{
$test = 'тест';
CModule::IncludeModule("sale");
$strOrderList = "";
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("ID", "NAME")
);
//$arFields["ORDER_LIST"] =count($dbBasketItems);
while ($arBasketItems = $dbBasketItems->Fetch())
{
$product_nam .=$arBasketItems["NAME"];
}
//echo $product_nam;
$arFields["ORDER_LIST"]=$product_nam;
return true;
}