Какая задача стояла:
Добавить статус заказа.
Новый статус нужен для исправленных/дополенных заказов в Битриксе.
При изменении статуса нам нужно туда вставлять обновленную общую сумму заказа, а так же публичную ссылку для оплаты заказа.
Действовать будем через init.php.
Создадим этот файл в каталоге:
/local/php_interface/
Будьте внимательны. Возможно у вас уже есть этот файл и используется. Для этого нужно проверить его в следующих путях вашего сайта:
/local/php_interface/ID сайта/init.php
/bitrix/php_interface/init.php
/bitrix/php_interface/ID сайта/init.php
Напишем в файл init.php. Если он есть, то просто ниже в файле добавим:
<?php
include_once( $_SERVER["DOCUMENT_ROOT"] . '/local/php_interface/classes/C_OnOrderStatusSendEmail.php' );
AddEventHandler("sale", "OnOrderStatusSendEmail", Array("C_OnSaleStatusEMail", "modifySaleStatusMail"));
Выше мы создали вызов на исполнение программного кода при событии: OnOrderStatusSendEmail.
Данное событие вызывается перед отправкой пиьсма о смене статуса.
Создаем каталог и файл:
/local/php_interface/classes/C_OnOrderStatusSendEmail.php
<?php
use Bitrix\Main\Application;
use Bitrix\Sale\Helpers;
use Bitrix\Sale\Helpers\Order;
/**
*
*/
class C_OnOrderStatusSendEmail
{
function bxModifySaleMails($orderID, &$eventName, &$arFields, $statusID)
{
if (CModule::IncludeModule("Sale")){
$order = Bitrix\Sale\Order::load($orderID);
$price = $order->getPrice();
$link = Bitrix\Sale\Helpers\Order::getPublicLink($order);
$arFields['ORDER_PUBLIC_URL'] = $link;
$arFields['PRICE_ALL'] = $price;
}
}
}
?>
В этом коде мы получаем следующие поля, который можно использовать в шаблоне:
#ORDER_PUBLIC_URL#
#PRICE_ALL#
Спасибо за информацию.
И заострение внимания на init.php важное. А то я сначала не туда все тыкался.
Этот блок текста лучше как-то более ярко выделить.
Сноску какую-нибудь что ли.