Битрикс: как добавить новые поля в почтовый шаблон
Это поле Адрес доставки (ADDRESS) мы добавили сами в Настройки - Свойства заказа - Список свойств. ADDRESS - это его мнемонический код.
Так как набор свойств передаётся в шаблон исходным кодом ядра, то неудивительно, что прописав в шаблоне нашу переменную #ADDRESS#, мы ничего не получим в письме о новом заказе. Эта переменная окажется пустой.
А нужно написать свой собственный обработчик события оформления заказа в bitrix/php_interface/init.php, вот например так:
AddEventHandler("sale", "OnOrderNewSendEmail", array("OrderNewSendEmail", "OnOrderNewSendEmailHandler")); Class OrderNewSendEmail { function OnOrderNewSendEmailHandler($id_order, &$eventName, &$arFields) { $arrOrder = \CSaleOrder::GetByID($id_order); $arFields['BX_TOTAL_ORDER'] = $arrOrder['PRICE']; $deliveryPrice = $arrOrder['PRICE_DELIVERY']; if($deliveryPrice){ $arFields['BX_DELIVERY_PRICE'] = CurrencyFormat($arrOrder['PRICE_DELIVERY'], 'RUB'); } else{ \Bitrix\Main\Loader::includeModule('sale'); $service = \Bitrix\Sale\Delivery\Services\Manager::getById($arrOrder["DELIVERY_ID"]); $arFields['BX_DELIVERY_PRICE'] = $service["DESCRIPTION"]; } $rsOrderProps = \CSaleOrderPropsValue::GetOrderProps($id_order); while ($arrOrderProps = $rsOrderProps->Fetch()) { if($arrOrderProps['CODE'] == 'PHONE') { $arFields['BX_PHONE'] = $arrOrderProps['VALUE']; } if($arrOrderProps['CODE'] == 'NAME') { $arFields['ORDER_USER'] = $arrOrderProps['VALUE']; } if($arrOrderProps['CODE'] == 'ADDRESS') { $arFields['BX_LOCATION'] = $arrOrderProps['VALUE']; } } $arFields['BX_DELIVERY'] = 'Курьером'; $arFields['BX_PAYMENT'] = 'Наличными'; $arFields['ORDER_DATE'] = $arrOrder['DATE_INSERT']; $arFields['BX_LIST_ITEMS'] = ''; $arFields['BX_TOTAL_DISCOUNT_FORMAT'] = ''; $arBasketElemsPrices = array(); $arProductIDs = array(); $rsBasket = \CSaleBasket::GetList(array(), array('ORDER_ID' => $id_order), false); while ($arrBasket = $rsBasket->Fetch()) { $db_res = \CSaleBasket::GetPropsList( array( "SORT" => "ASC", "NAME" => "ASC" ), array("BASKET_ID" => $arrBasket['ID'], 'PRODUCT_ID' => $arrBasket['PRODUCT_ID']) ); $arProductIDs[] = $arrBasket['PRODUCT_ID']; $arThisProps = array(); while ($ar_res = $db_res->Fetch()) { $arThisProps[$ar_res["CODE"]] = $ar_res["VALUE"]; } $arBasketElemsPrices[$arrBasket['PRODUCT_ID']] = array( 'PRICE' => $arThisProps['PRICE_WITHOUT_DISCOUNT'], 'PRICE_WITH_DISCOUNT' => CurrencyFormat($arrBasket['PRICE'], 'RUB'), 'SIZE' => $arThisProps['SIZE'], 'QUANTITY' => $arrBasket['QUANTITY'] ); } $htmlBasket = "<table align=\"center\" class=\"wrapper float-center\" style=\"Margin:0 auto;border-collapse:collapse;border-spacing:0;float:none;margin:0 auto;padding:0;text-align:center;vertical-align:top;width:100%\"><tr style=\"padding:0;text-align:left;vertical-align:top\"><td class=\"wrapper-inner\" style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\"> <table align=\"center\" class=\"container\" style=\"Margin:0 auto;background:#fff;border-collapse:collapse;border-spacing:0;margin:0 auto;padding:0;text-align:inherit;vertical-align:top;width:580px\"><tbody><tr style=\"padding:0;text-align:left;vertical-align:top\"><td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\"> <table width=\"100%\" align=\"center\" style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top\"> <tr style=\"padding:0;text-align:left;vertical-align:top\"> <td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;background:#ebe8e1;border-collapse:collapse!important;color:#1c1c1c;font-family:Tahoma,Arial;font-size:14px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\"> <p class=\"text-center\" style=\"Margin:0;Margin-bottom:10px;color:#1c1c1c;font-family:Tahoma,Arial;font-size:13px;font-weight:400;line-height:1.3;margin:0;margin-bottom:10px;padding:0;padding-top:8px;text-align:center\">В ЗАКАЗЕ</p> </td> </tr> <tr style=\"padding:0;text-align:left;vertical-align:top\"> <td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#1c1c1c;font-family:Tahoma,Arial;font-size:14px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\">"; if(!empty($arProductIDs)) { $rsElems = CIBlockElement::GetList( array(), array('IBLOCK_ID' => 2, 'ID' => $arProductIDs), false, false, array( 'NAME', 'ID', 'DETAIL_PAGE_URL' )); $arBasketElemsInfo = array(); while ($arrElems = $rsElems->Fetch()) { $arBasketElemsInfo = array( 'NAME' => $arrElems['NAME'], 'PRICE' => ($arBasketElemsPrices[$arrElems['ID']]['PRICE']) ? $arBasketElemsPrices[$arrElems['ID']]['PRICE'] : $arBasketElemsPrices[$arrElems['ID']]['PRICE_WITH_DISCOUNT'], 'PRICE_WITH_DISCOUNT' => $arBasketElemsPrices[$arrElems['ID']]['PRICE_WITH_DISCOUNT'], 'QUANTITY' => $arBasketElemsPrices[$arrElems['ID']]['QUANTITY'], 'DETAIL_PAGE_URL' => $arrElems['DETAIL_PAGE_URL'] ); $res = CIBlockElement::GetProperty(2, $arrElems['ID'], array(), array("CODE" => "MORE_PHOTO")); if ($arProp = $res->Fetch()) { $arFilter = array("name" => "sharpen", "precision" => 85); $arFile = CFile::GetFileArray($arProp["VALUE"]); $arFileTmp = CFile::ResizeImageGet( $arFile, array("width" => 141, "height" => 141), BX_RESIZE_IMAGE_EXACT, true, $arFilter ); } if($arFileTmp["src"]){ $arBasketElemsInfo["PICTURE"] = $arFileTmp["src"]; } else{ $arBasketElemsInfo["PICTURE"] = "/bitrix/components/decor/catalog/templates/.default/decor/catalog.section/.default/images/no_photo.png"; } $htmlBasket .= "<table width=\"90%\" align=\"center\" style=\"border-bottom:1px solid #eee;border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top\"> <tr style=\"padding:0;text-align:left;vertical-align:top\"> <td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\"> <table class=\"spacer\" style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%\"><tbody><tr style=\"padding:0;text-align:left;vertical-align:top\"><td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Tahoma,Arial;font-size:8px;font-weight:400;hyphens:auto;line-height:8px;margin:0;mso-line-height-rule:exactly;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\"> </td></tr></tbody></table> <table class=\"row\" style=\"border-collapse:collapse;border-spacing:0;display:table;padding:0;position:relative;text-align:left;vertical-align:top;width:100%\"><tbody><tr style=\"padding:0;text-align:left;vertical-align:top\"> <th class=\"small-12 large-4 columns first\" style=\"Margin:0 auto;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:16px;padding-left:16px;padding-right:8px;text-align:left;width:177.33px\"><table style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%\"><tr style=\"padding:0;text-align:left;vertical-align:top\"><th style=\"Margin:0;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left\"> <img width=\"141\" src=\"{$arBasketElemsInfo['PICTURE']}\" alt=\"\" title=\"\" style=\"-ms-interpolation-mode:bicubic;clear:both;display:block;max-width:100%;outline:0;text-decoration:none;width:auto\"> </th></tr></table></th> <th class=\"product-title small-12 large-4 columns\" style=\"Margin:0 auto;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:16px;padding-left:8px;padding-right:8px;text-align:left;width:177.33px\"><table style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%\"><tr style=\"padding:0;text-align:left;vertical-align:top\"><th style=\"Margin:0;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left\"> <font style=\"font-size:14px;display:inline-block;text-decoration:none;\">{$arBasketElemsInfo['NAME']}</font><br> <b>{$arBasketElemsInfo['PRICE_WITH_DISCOUNT']}</b> </th></tr></table></th> <th class=\"small-12 large-4 columns last\" style=\"Margin:0 auto;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0 auto;padding:0;padding-bottom:16px;padding-left:8px;padding-right:16px;text-align:left;width:177.33px\"><table style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%\"><tr style=\"padding:0;text-align:left;vertical-align:top\"><th style=\"Margin:0;color:#0a0a0a;font-family:Tahoma,Arial;font-size:14px;font-weight:400;line-height:1.3;margin:0;padding:0;text-align:left\"> <table width=\"100%\" align=\"center\" style=\"border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%\"> <tr style=\"padding:0;text-align:left;vertical-align:top\"><td style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#666;font-family:Tahoma,Arial;font-size:12px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:left;vertical-align:top;word-wrap:break-word\">Количество</td><td class=\"text-right\" style=\"-moz-hyphens:auto;-webkit-hyphens:auto;Margin:0;border-collapse:collapse!important;color:#0a0a0a;font-family:Tahoma,Arial;font-size:11px;font-weight:400;hyphens:auto;line-height:1.3;margin:0;padding:0;text-align:right;vertical-align:top;word-wrap:break-word\">{$arBasketElemsInfo['QUANTITY']}</td></tr> </table> </th></tr></table></th> </tr></tbody></table> </td> </tr> </table>"; } } $htmlBasket .= " </td> </tr> </table> </td></tr></tbody></table> </td></tr></table>"; $arFields['BASKET_ITEMS'] = $htmlBasket; } }
Теперь переменную BX_LOCATION можно использовать в почтовом шаблоне - #BX_LOCATION#
.
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- Битрикс: как добавить новые поля в почтовый шаблон (11.12.2017) ← вы тут
- Формы в Битриксе сделать в оформлении Bootstrap (07.12.2017)
- Артефакты при ресайзе библиотекой GD изображений с однородным (белым) фоном (07.12.2017)
- Owl Carousel 2 и Битрикс. Настройка слайдера (26.11.2017)
- Битрикс: проверка отправленных писем (26.11.2017)
- Битрикс: оформление заказа, упрощаем компонент sale.order.ajax (27.11.2017)
- Изменения в конфиге битрикса после переноса сайта. Подключение к БД (22.11.2017)
- Битрикс на поддомене. Неудобство с переменной DocumentRoot. Для хостинга Reg.ru (22.11.2017)
- Смена кодировки Битрикса с windows-1251 в UTF-8 (utf8) (01.12.2017)
- Битрикс: проверка на главной ли странице находимся (и другие проверки) (30.10.2017)
- Битрикс: правила обработки адресов и urlrewrite (30.10.2017)
- Как сделать разный title и H1 в Битриксе (30.10.2017)
- Почистить кеш Bitrix. Как удалить весь кеш в Битриксе? (20.06.2017)
- 1С-Битрикс: Карта сайта Google Sitemap в Битриксе (22.10.2011)
- 1С-Битрикс: Вывод свойства в детальный просмотр новости для полей типа HTML/текст (24.08.2011)
- Создание шаблона в 1С-Битрикс (23.10.2011)
- Разные шаблоны у главной и у внутренних страниц сайта на Битриксе (19.12.2011)
- Прототип шаблона дизайна сайта в 1С-Битрикс (23.10.2011)