G-Web IT. Битрикс-интегратор. Сложный ecommerce и нестандартные интеграции. G-Web IT
Адрес: Летная улица, 30, корпус 1 141021 Мытищи,
Телефон:+7 916 393–13–52, Электронная почта: info@goldwebit.net
По будням с 10:00 до 20
Мы свяжемся с Вами максимально оперативно
+7 (916) 393-13-52

G-Web IT

+7 (916) 393-13-52 online-заявка

Заявка на услуги

Мы свяжемся с Вами максимально оперативно

Вставляем картинки товаров в письмо о заказе

Вставляем картинки товаров в письмо о заказе

В последних версиях 1С-Битрикс появились html-шаблоны писем, но к примеру в шаблоне Новый заказ [SALE_NEW_ORDER] перечень товаров идет в виде списка, в котором нет изображений товаров. В поисковике мы находим решение этой проблемы, автор Долганин Антон, он как раз и предлогает разумное решение. Единственное мы немного доработаем его, так как решение берет картинку по ид торгового предложения которое хранится в корзине. Нас не совсем это устраивает, так как в основном у ТП нет сохраненных изображений, а только у основного товара.


Поэтому мы добавим одну проверку:

$mxResult = CCatalogSku::GetProductInfo( $arBasket['PRODUCT_ID'] );
if (is_array($mxResult) && !empty($mxResult['ID']))
{
$arProduct = CIBlockElement::GetByID($mxResult['ID'])->Fetch();;
} else {
$arProduct = CIBlockElement::GetByID($arBasket['PRODUCT_ID'])->Fetch();
}

С помощью метода CCatalogSku::GetProductInfo, который позволяет получить по ID торгового предложения ID товара, мы достаем ид товара и дальше передаем по логике для получения изображения.


Полный код ниже:


AddEventHandler('sale', 'OnOrderNewSendEmail', array(' CSendOrderTable', 'OnOrderNewSendEmailHandler'));
class CSendOrderTable
{
public static function OnOrderNewSendEmailHandler($ID, &$eventName, &$arFields)
{
if ($ID>0 && CModule::IncludeModule('iblock'))
{
$arFields['ORDER_LIST'] = '<table cellpadding="5" cellspacing="5">';
$rsBasket = CSaleBasket::GetList(array(), array('ORDER_ID' => $ID));
while ($arBasket = $rsBasket->GetNext())
{
$arPicture = false;
if ($arBasket['MODULE'] == 'catalog')
{
$mxResult = CCatalogSku::GetProductInfo( $arBasket['PRODUCT_ID'] );

if (is_array($mxResult) && !empty($mxResult['ID']))
{
$arProduct = CIBlockElement::GetByID($mxResult['ID'])->Fetch();;
} else {
$arProduct = CIBlockElement::GetByID($arBasket['PRODUCT_ID'])->Fetch();
}

if ($arProduct) {
if ($arProduct['PREVIEW_PICTURE'] > 0) {
$fileID = $arProduct['PREVIEW_PICTURE'];
} elseif ($arProduct['DETAIL_PICTURE'] > 0) {
$fileID = $arProduct['DETAIL_PICTURE'];
} else {
$fileID = 0;
}
$arPicture = CFile::ResizeImageGet($fileID, array('width' => 90, 'height' => 110));
$arPicture['SIZE'] = getimagesize($_SERVER['DOCUMENT_ROOT'].$arPicture['src']);
}
}

$arFields['ORDER_LIST'] .= '<tr valign="top">'
. '<td>'.($arPicture ? '<img src="http://'.$GLOBALS['SERVER_NAME'].(str_replace(array('+', ' '), '%20', $arPicture['src']))

.'" width="'.$arPicture['SIZE'][0].'" height="'.$arPicture['SIZE'][1].'" alt="">' : '').'</td>'
. '<td>'.$arBasket['NAME'].'</td>'
. '<td style="white-space: nowrap">'.(int)$arBasket['QUANTITY'].' шт.</td>'
. '<td style="white-space: nowrap">'.SaleFormatCurrency($arBasket['PRICE'],
$arBasket['CURRENCY']).'</td>'
. '</tr>';
}

$arFields['ORDER_LIST'] .= '</table>';
}
}
}

Готово. Разместите данный код событий в вашем /bitrix/php_interface/init.php 


Возврат к списку