@anton99zel
29а класс средней школы №7

Как добавить свойства товара в письмо клиенту при заказе?

На карточке товара есть свойства, эти свойства летят с товаром в корзину, далее заказ...
В сети полно примеров, как в письма добавить поля заказа, типа доставки или адреса...
А как добавить свойства товара не понятно, например: Рубашка Мужская (размер XXL), в письмо летит только название, без размера.
Единственный пример, который нашел на Хабре, так и не заработал, либо я не правильно им воспользовался, поскольку не понятно : https://habr.com/sandbox/70044/
Он пишет
Т.к CSaleBasket::GetList свойства не выдает, пришлось использовать CIBlockElement::GetById.

Я стал использовать
$rsElem = CIBlockElement::GetById($arItem["PRODUCT_ID"]); 
$arElem = $rsElem->GetNextElement();
$arProps = $arElem->GetProperties();

Но получаю массив всех свойств товара, а не массив свойств именно выбранных пользователем.

Вот мой код на данный момент:
// Письмо пользователю при оформлении нового заказа
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()
        );
$tim = date("d.m.Y");                                
$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())
                {$number = $arItem["PRICE"];
$num = number_format($number,0,'.','');
                                  $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'>".$num."</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_DATE"  => $tim,
    "ORDER_ID"         => $ID,
    "SOSTAV"              => $zak,
    "ORDER_USER"    => $arUser_name,
    "EMAIL"                 => $arUser,
    "BCC"                     => $arUser,
    "PRICE"                  => (int)$val["PRICE"]." руб",
    "SALE_EMAIL"     => "info@domain.ru",
    );
 CEvent::SendImmediate("SALE_NEW_ORDER", s1, $arEventFields, "N", 25);
}
}
  • Вопрос задан
  • 1825 просмотров
Решения вопроса 1
AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза
Читайте через новое ядро, D7.

Навскидку:
$order_obj=\Bitrix\Sale\Order::load( $order_id );
$basket= $order_obj->getBasket();
$basket_items=$basket->getBasketItems();

/* @var \Bitrix\Sale\BasketItem $bi */
foreach ( $basket_items as $bi ) {
	$item_props= $bi->getPropertyCollection()->getPropertyValues();
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alex-1917
@alex-1917
Если ответ помог, отметь решением
Ну, началось!! )))
Вы курсы разработчика до конца прошли или как обычно все закончилось на вводной части?
Что за свойство-то, из простыни не понял, вернее неохота читать... Код покороче бы написали, зачем ВСЮ простыню-то???!!
Ответ написан
OlegMifle
@OlegMifle
php-программист
Есть же компонент sale.order.detail.mail
В почтовый шаблон вставляется как-то вот так
<? EventMessageThemeCompiler::includeComponent("bitrix:sale.personal.order.detail.mail", "template_name", array(
// параметры компонента
 )) ?>

Копируешь шаблон компонента и получаешь нужные свойства без применения обработчика.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы