webaikos
@webaikos
новичок

Как добавить новые поля почтовых шаблонов?

Доброго дня

в шаблоне письма нового заказа есть поля нужно изменить поля:
#ORDER_LIST# - состав заказа
#USER_DATA# - информация о заказчике

поле #ORDER_LIST# выводит одной строкой все (код товара, название товара, количество товара, цена товара )
поле #USER_DATA# выводит одной строкой все (Ф.И.О., город, адрес, телефон)
хочется чтобы выводилось все по отдельности
к примеру

#USER_DATA# - ФИО
#USER_City# - Город
#USER_Street # - Улица
#USER_Phone# - Телефон
и т.д.
  • Вопрос задан
  • 5496 просмотров
Пригласить эксперта
Ответы на вопрос 2
deMone
@deMone
Техдиректор — tech-director.ru
Фактически самостоятельно добавление ни к чему не приведёт, потому что набор переменных передаётся исходным кодом ядра в шаблон.

Соответственно, если исходный код не передаёт нужных вам переменных, в шаблоне они не появятся.

Чтобы решить проблему, нужно отключить автоматическую отправку письма, потом написать собственный обработчик события оформления заказа, в котором вызвать вручную отправку шаблона, которому передать все необходимые вам поля.

Короче, без программиста вы не обойдётесь.

Если нужно сделать — могу помочь, пишите.
Ответ написан
sabramovskikh
@sabramovskikh
Нужно добавить в init.php

<?
AddEventHandler("main", "OnBeforeEventAdd", array("MailPost", "OnBeforeEventAddHandler"));
class MailPost
{
    function OnBeforeEventAddHandler(&$event, &$lid, &$arFields)
		{
		if ($event=="SALE_NEW_ORDER") {
			$order = CSaleOrder::GetByID($arFields['ORDER_ID']);
		
		 if(CModule::IncludeModule('sale')) {

		 	if ($arOrder = CSaleOrder::GetByID($arFields['ORDER_ID'])) {
		 		
		 		if ($arPaySys = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]))
					{
						if ($arPaySys["ID"] == "5") {
							$arFields["REKVIZIT_SBERBANK"] = "<br>Номер карты сбербанка 4276720010044925 <br>Ирина Александровна С <br>В комментарии к оплате укажите вашу фамилию.";	
						}
					   $arFields["PAY_SYSTEM_ID"] = $arPaySys["NAME"];
					}

				if ($arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]))
				{
				   $arFields["DELIVERY_ID"] = $arDeliv["NAME"];
				}
				if ($arOrder["DELIVERY_ID"] == "pickpoint:postamat") {
							$arFields["DELIVERY_ID"] = "Pickpoint";
						}

			}
			if ($arOrderPropsValue = CSaleOrderPropsValue::GetOrderProps($arFields['ORDER_ID'])) {
					while ($orderProp = $arOrderPropsValue->Fetch()) {
						$orderProp["ORDER_PROPS_ID"] = intval($orderProp["ORDER_PROPS_ID"]);
						switch ($orderProp["ORDER_PROPS_ID"]) {
							case 1:
								$arFields["FIO"] = $orderProp["VALUE"];
								break;
							case 9:
								$arFields["LASTNAME"] = $orderProp["VALUE"];
								break;
							case 10:
								$arFields["FIRSTNAME"] = $orderProp["VALUE"];
								break;
							case 11:
								$arFields["SECONDNAME"] = $orderProp["VALUE"];
								break;
							case 3:
								$arFields["PHONE"] = $orderProp["VALUE"];
								break;
							case 8:
								$arFields["INDEX"] = $orderProp["VALUE"];
								break;	
							case 5:
								$arLocs = CSaleLocation::GetByID($orderProp["VALUE"], LANGUAGE_ID);
								$arFields["LOCATION"] = $arLocs["COUNTRY_NAME"].' / '.$arLocs["REGION_NAME"].' / '.$arLocs["CITY_NAME_ORIG"];
								break;
							case 7:
								$arFields["ADDRESS"] = $orderProp["VALUE"];
								break;
						}
						$arFields["FIO"] = $arFields["LASTNAME"]." ".$arFields["FIRSTNAME"]." ".$arFields["SECONDNAME"];

				}
				
			}	

			 }
		}
        
    }
}

?>
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы