Вдруг кто поможет.... Ну и, может, код для почты пригодится ))))
Вопрос.
В почтовом шаблоне NEW_ORDER модифицированный состав заказа через init.php.
Почему-то при просмотре сообщения с заказом съезжает список товаров - видно только название, вся остальная информация обрезается. Не пойму, в каком из файлов ошибка...
Код шаблона
Скрытый текст |
---|
<style> body{width:100% !important; margin:0; padding:0;} table td table td, table td table th{ border: 1px solid #ccc; padding: 7px; } table tr:last-child td, table tr:last-child th{ border-bottom: none; } table th{ text-align: left; } table{ border-collapse: collapse; border-spacing: 0; } </style> <table cellpadding="0" cellspacing="0" width="850" style="background-color: #d1d1d1; border-radius: 2px; border:1px solid #d1d1d1; margin: 0 auto;" border="1" bordercolor="#d1d1d1"> <tbody> <tr> <td height="83" width="850" bgcolor="#eaf3f5" style="border: none; padding-top: 23px; padding-right: 17px; padding-bottom: 24px; padding-left: 17px;"> <table cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td bgcolor="#ffffff" height="75" style="font-weight: bold; text-align: center; font-size: 26px; color: #0b3961;"> Вами оформлен заказ в магазине #SITE_NAME# </td> </tr> <tr> <td bgcolor="#bad3df" height="11"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td width="850" bgcolor="#f7f7f7" valign="top" style="border: none; padding-top: 23px; padding-right: 17px; padding-bottom: 24px; padding-left: 17px;"> <table class="table600" style="border-collapse: collapse; border-spacing: 0; max-width: 100%; min-width: 100%; background: #ffffff; color: #4e4e4e; line-height: 1.42857; font-size: 13px; font-family: Arial, sans-serif;" width="650px" cellspacing="0" cellpadding="0"> <tbody> <tr> <td> <table style="width: 100%; border-collapse: collapse; border-spacing: 0;" cellspacing="0" cellpadding="0"> <tbody> <tr> <th colspan="2" style="background-color: #efefef; text-align: center; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> Детализация заказа </th> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>№ заказа:</b> #ORDER_ID# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>E-Mail: </b><a href="mailto:vid94@mail.ru">#EMAIL#</a> </td> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Дата заказа:</b> #ORDER_DATE# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Телефон:</b> #PHONE# </td> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Способ оплаты:</b> #PAY_SYSTEM# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>IP адрес:</b> #IP_ADDRESS# </td> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Способ доставки:</b> #DELIVERY# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> </td> </tr> </tbody> </table> </td> </tr> <tr> <td> <table style="width: 100%; border-collapse: collapse; border-spacing: 0;" cellspacing="0" cellpadding="0"> <tbody> <tr> <th style="background-color: #efefef; text-align: center; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Инструкции </th> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> После проверки заказа менеджерами компании "Алюмика", Вам будет выставлен счет на оплату. Вы можете следить за выполнением своего заказа (на какой стадии выполнения он находится), войдя в Ваш персональный раздел сайта "Алюмика". Обратите внимание, что для входа в этот раздел Вам необходимо будет ввести логин и пароль пользователя сайта "Алюмика". Для того, чтобы аннулировать заказ, воспользуйтесь функцией отмены заказа, которая доступна в Вашем персональном разделе сайта "Алюмика". Пожалуйста, при обращении к администрации сайта "Алюмика" ОБЯЗАТЕЛЬНО указывайте номер Вашего заказа </td> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> Для уточнения деталей заказа и доставки, либо при появлении вопросов, касающихся заказа и требующих согласования, мы свяжемся с Вами по указанному номеру телефона или e-mail. </td> </tr> </tbody> </table> </td> </tr> <tr> <td> #ADDRESS_HTML# <table style="width: 100%; border-collapse: collapse; border-spacing: 0;" cellspacing="0" cellpadding="0"> <tbody> <tr> <th style="text-align: left; background-color: #efefef; width: 300px; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Адрес плательщика </th> <th style="text-align: left; background-color: #efefef; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Адрес доставки </th> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #FIO# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #FIO# </td> </tr> <tr> <td style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #ADDRESS# </td> <td style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #ADDRESS# </td> </tr> </tbody> </table> </td> </tr> <tr> <td> #ITEMS_HTML# <table style="width: 100%; border-collapse: collapse; border-spacing: 0;" cellspacing="0" cellpadding="0"> <tbody> <tr> <th style="text-align: left; background-color: #efefef; width: 300px; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Наименование: </th> <th style="text-align: left; background-color: #efefef; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Модель </th> <th style="text-align: left; background-color: #efefef; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Количество </th> <th style="text-align: left; background-color: #efefef; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Цена </th> <th style="text-align: left; background-color: #efefef; border-width: 1px; border-style: solid; border-color: #ccc; border-top: none; padding: 7px;"> Итого: </th> </tr> <tr> <td colspan="4" style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Сумма:</b> </td> <td style="white-space: nowrap; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #SUMM# руб. </td> </tr> <tr> <td colspan="4" style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>#DELIVERY#</b> </td> <td style="white-space: nowrap; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #DELIVERY_PRICE# </td> </tr> <tr> <td colspan="4" style="text-align: right; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Итого:</b> </td> <td style="white-space: nowrap; border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #SUMM_WITH_DELIVERY# руб. </td> </tr> <tr> <td colspan="5" style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> <b>Комментарий к Вашему заказу:</b> </td> </tr> <tr> <td colspan="5" style="border-width: 1px; border-style: solid; border-color: #ccc; padding: 7px;"> #COMMENT# </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td height="40px" width="850" bgcolor="#f7f7f7" valign="top" style="border: none; padding-top: 23px; padding-right: 17px; padding-bottom: 24px; padding-left: 17px;"> <p style="border-top: 1px solid #d1d1d1; margin-bottom: 5px; margin-top: 0; padding-top: 20px; line-height:21px;"> С уважением,<br> администрация <a href="http://#SERVER_NAME#"; style="color:#2e6eb6;">Интернет-магазина</a><br> E-mail: <a href="mailto:#SALE_EMAIL#" style="color:#2e6eb6;">#SALE_EMAIL#</a> </p> </td> </tr> </tbody> </table> #IP_ADDRESS# #IP_ADDRESS# #IP_ADDRESS# #EMAIL# |
Код init.php
Скрытый текст |
---|
addEventHandler( 'sale', 'OnOrderNewSendEmail', 'OnOrderNewSendEmailHandler' ); /** * @param $ID * @param $eventName * @param $arFields * * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\ArgumentNullException * @throws \Bitrix\Main\LoaderException * @throws \Bitrix\Main\NotImplementedException * @throws \Bitrix\Main\ObjectNotFoundException * @throws \Bitrix\Main\SystemException */ function OnOrderNewSendEmailHandler($ID, $eventName, &$arFields) { $ip = Application::getInstance()->getContext()->getRequest()->getRemoteAddress(); $arFields['IP_ADDRESS'] = $ip; try { $dbProps = OrderPropsValueTable::getList( [ 'select' => [ 'ID', 'NAME', 'CODE', 'VALUE', ], 'filter' => ['ORDER_ID' => $arFields['ORDER_ID']], ] ); } catch (\Bitrix\Main\ArgumentException $e) { } while ($res = $dbProps->fetch()) { switch ($res['CODE']) { case 'EMAIL': $arFields['EMAIL'] = $res['VALUE']; break; case 'PHONE': $arFields['PHONE'] = $res['VALUE']; break; case 'FIO': $arFields['FIO'] = $res['VALUE']; break; case 'ADDRESS': $arFields['ADDRESS'] = $res['VALUE']; break; case 'LOCATION': $location = $res['VALUE']; break; case 'ZIP': $zip = $res['VALUE']; break; } } $dbLocation = LocationTable::getByCode($location); while ($arLocation = $dbLocation->fetch()) { $tmpLocation = $arLocation; } $finalLocation = CSaleLocation::GetByID($tmpLocation['ID']); $city = $finalLocation['CITY_NAME']; $region = $finalLocation['REGION_NAME']; $country = $finalLocation['COUNTRY_NAME']; $arFields['ADDRESS_HTML'] = " $city $zip $city $zip $region $region $country $country "; $order = Order::load($arFields['ORDER_ID']); $comment = $order->getField('USER_DESCRIPTION'); $arFields['COMMENT'] = $comment; $deliveryId = $order->getDeliverySystemId(); $paymentCollection = $order->getPaymentCollection(); foreach ($paymentCollection as $payment) { $psName = $payment->getPaymentSystemName(); } $arFields['PAY_SYSTEM'] = 'Безналичный расчет'; try { $arDelivery = Manager::getById((int)$deliveryId[0]); } catch (Exception $e) { \Bitrix\Main\Diag\Debug::dumpToFile($e->getMessage()); } $shipmentId = $order->getShipmentCollection(); $arDeliveryServiceAll = \Bitrix\Sale\Delivery\Services\Manager::getRestrictedObjectsList($shipmentId->getSystemShipment()); $deliveryObj = $arDeliveryServiceAll[$deliveryId[0]]; /** @var Bitrix\Sale\Delivery\ExtraServices\Manager $extraServicesObj */ $extraServicesObj = $deliveryObj->getExtraServices(); /** @var Bitrix\Sale\Delivery\ExtraServices\Enum $arExtraServices */ $arExtraServices = $extraServicesObj->getItems(); foreach ($arExtraServices as $item) { /** @var Bitrix\Sale\Delivery\ExtraServices\Enum $item */ $value = $item->getValue(); $arParams = $item->getParams(); $extraServiceHtml[] = $arParams['OPTIONS'][$value]; } $arFields['DELIVERY'] = $arDelivery['NAME'] . '<br>'; foreach ($extraServiceHtml as $serviceHtml) { $serviceHtml = str_replace('(0 руб.)', '', $serviceHtml); $arFields['DELIVERY'] .= $serviceHtml . '<br>'; } if ($arFields['DELIVERY_PRICE'] == 0) { $arFields['DELIVERY_PRICE'] = ''; } else { $arFields['DELIVERY_PRICE'] = CCurrencyLang::CurrencyFormat($arFields['DELIVERY_PRICE'], 'RUB'); } $arFields['SUMM'] = $order->getPrice() - $arFields['DELIVERY_PRICE']; $arFields['SUMM_WITH_DELIVERY'] = $order->getPrice(); $basket = $order->getBasket(); $basketCollection = $basket->getBasketItems(); /** @var \Bitrix\Sale\BasketItem $item */ foreach ($basketCollection as $item) { $skuCheck = CCatalogSku::GetProductInfo($item->getField('PRODUCT_ID')); if (is_array($skuCheck)) { $arScuItemIds[] = $item->getField('PRODUCT_ID'); } else { $arItemIds[] = $item->getField('PRODUCT_ID'); } } Loader::includeModule('ab.iblock'); if (!empty($arScuItemIds)) { $db = Element::getList( [ 'filter' => [ 'ID' => $arScuItemIds, 'IBLOCK_ID' => 3, ], 'select' => [ 'ID', 'ARTNUMBER' => 'PROPERTY.ARTNUMBER', 'NAME', ], ] ); while ($res = $db->fetch()) { $arHtml[$res['ID']]['ARTNUMBER'] = $res['ARTNUMBER']; $arHtml[$res['ID']]['NAME'] = $res['NAME']; } } if (!empty($arItemIds)){ $db = Element::getList( [ 'filter' => [ 'ID' => $arItemIds, 'IBLOCK_ID' => 2, ], 'select' => [ 'ID', 'ARTNUMBER' => 'PROPERTY.ARTNUMBER', 'NAME', ], ] ); while ($res = $db->fetch()) { $arHtml[$res['ID']]['ARTNUMBER'] = $res['ARTNUMBER']; $arHtml[$res['ID']]['NAME'] = $res['NAME']; } } $itemsHtml = ""; foreach ($basketCollection as $item) { $basketItemPropertyCollection = $item->getPropertyCollection(); $id = $item->getField('PRODUCT_ID'); $name = $arHtml[$id]['NAME']; foreach ($basketItemPropertyCollection as $itemProperty) { if ($itemProperty->getField('NAME') == 'rezi') { $name .= '<br> ' . 'Резы: ' . str_replace(':', ' x ', $itemProperty->getField('VALUE')); } } $artNumber = $arHtml[$id]['ARTNUMBER']; $quantity = $item->getQuantity(); $basePrice = CCurrencyLang::CurrencyFormat($item->getBasePrice(), 'RUB'); $price = CCurrencyLang::CurrencyFormat($item->getFinalPrice(), 'RUB'); $itemsHtml .= " $name $artNumber ". $quantity.' '.$item->getField('MEASURE_NAME')." $basePrice $price "; } $arFields['ITEMS_HTML'] = $itemsHtml; } |