Last active
August 9, 2019 11:27
-
-
Save ArtemSites/1b0201e093f2b6181778e15f5e2196ba to your computer and use it in GitHub Desktop.
Bitrix. Добавление своего макроса #PHONE# к шаблону письма.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // /local/php_interface/init.php | |
| // или | |
| // /bitrix/php_interface/init.php | |
| //После этого появляется макрос #PHONE# в шаблоне письма. | |
| // Регистрируем обработчик | |
| AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails"); | |
| //-- Собственно обработчик события | |
| function bxModifySaleMails($orderID, &$eventName, &$arFields) { | |
| // получаем телефон (или еще что-нибудь) | |
| $orderProps = CSaleOrderPropsValue::GetOrderProps($orderID); | |
| $PHONE = ""; | |
| while ($arProps = $orderProps->Fetch()) { | |
| if ($arProps["CODE"] == "PHONE") | |
| { | |
| $PHONE = $arProps["VALUE"]; | |
| } | |
| //- добавляем новые поля в массив результатов - каждое поле это макрос для почтового события | |
| $arFields["PHONE"] = $PHONE; | |
| } | |
| } | |
| ///////////////////////////////////////////////////////////////////////////////////////////////////// | |
| //Более подробно: | |
| function bxModifySaleMails($orderID, &$eventName, &$arFields) { | |
| // инициализируем переменные | |
| $name = ''; | |
| $lastName = ''; | |
| $fullName = ''; | |
| $phone = ''; | |
| $zip = ''; | |
| $countryName = ''; | |
| $obl = ''; | |
| $cityName = ''; | |
| $address = ''; | |
| $deliveryName = ''; | |
| $paySystemName = ''; | |
| // получаем параметры заказа по ID | |
| $arOrder = CSaleOrder::GetByID($orderID); | |
| // получаем свойства заказа | |
| $orderProps = CSaleOrderPropsValue::GetOrderProps($orderID); | |
| // проходим циклом по всем свойствам и вытаскиваем нужные нам | |
| while ($arProps = $orderProps->Fetch()) { | |
| // телефон | |
| if ($arProps['CODE'] == 'PHONE') { | |
| $phone = htmlspecialchars($arProps['VALUE']); | |
| } | |
| // страну, область, город, | |
| if ($arProps['CODE'] == 'LOCATION') { | |
| // если не перешли на местоположения 2.0 | |
| $arLocs = CSaleLocation::GetByID($arProps['VALUE']); | |
| // если перешли на местоположения 2.0 раскомментируйте следующую строку | |
| // и закомментируйте строчку выше | |
| //$arLocs = CSaleLocation::GetByID(CSaleLocation::getLocationIDbyCODE($arProps['VALUE'])); | |
| $countryName = $arLocs['COUNTRY_NAME_LANG']; | |
| $obl = $arLocs['REGION_NAME_LANG']; | |
| $cityName = $arLocs['CITY_NAME_LANG']; | |
| } | |
| // индекс | |
| if ($arProps['CODE'] == 'ZIP'){ | |
| $zip = $arProps['VALUE']; | |
| } | |
| // адрес | |
| if ($arProps['CODE'] == 'ADDRESS') { | |
| $address = $arProps['VALUE']; | |
| } | |
| // имя | |
| if ($arProps['CODE'] == 'FIRSTNAME') { | |
| $name = $arProps['VALUE']; | |
| } | |
| // фамилия | |
| if ($arProps['CODE'] == 'LASTNAME') { | |
| $lastName = $arProps['VALUE']; | |
| } | |
| } | |
| $fullName = $lastName .' ' . $name; | |
| $fullAddress = $zip . ', ' . $countryName . ', ' . $obl . ', ' . $cityName . ', ' . $address; | |
| // получаем название службы доставки | |
| $arDeliv = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']); | |
| if ($arDeliv) { | |
| $deliveryName = $arDeliv['NAME']; | |
| } | |
| // получаем название платежной системы | |
| $arPaySystem = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID']); | |
| if ($arPaySystem) { | |
| $paySystemName = $arPaySystem['NAME']; | |
| } | |
| // добавляем полученные значения в результирующий массив | |
| $arFields['ORDER_DESCRIPTION'] = $arOrder['USER_DESCRIPTION']; | |
| $arFields['USER_FULL_NAME'] = $fullName; | |
| $arFields['PHONE'] = $phone; | |
| $arFields['DELIVERY_NAME'] = $deliveryName; | |
| $arFields['PAY_SYSTEM_NAME'] = $paySystemName; | |
| $arFields['FULL_ADDRESS'] = $fullAddress; | |
| } | |
| //Станут доступны макросы в шаблоне: | |
| /* | |
| #ORDER_DESCRIPTION# | |
| #USER_DESCRIPTION# | |
| #USER_FULL_NAME# | |
| #PHONE# | |
| #DELIVERY_NAME# | |
| #PAY_SYSTEM_NAME# | |
| #FULL_ADDRESS# | |
| */ | |
| /* | |
| Если город не отображается, то попробуйте в цикл добавить условие if ($arProps['CODE'] == 'CITY') | |
| Если хотите изменить отображение таблицы с содержимым заказа, то используйте CSaleBasket::GetList. По id заказа можно получить id всех товаров. | |
| */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment