Здравствуйте!
Необходимо при добавлении товара в корзину добавлять ему некоторое свойство.
В старом ядре я делал так:[CODE]AddEventHandler("sale", "OnBeforeBasketAdd", "OnMyBeforeBasketAdd");
function OnMyBeforeBasketAdd(&$val)
{
$val['PROPS'][] = array(
"NAME" => "Название",
"SORT" => 2,
"CODE" => "CODE",
"VALUE" => "Значение",
);
}
[/CODE]В новом ядре этот способ не работает из-за
Скрытый текст |
---|
[CODE]if ($isOrderConverted != "Y") { foreach(GetModuleEvents("sale", "OnBeforeBasketAdd", true) as $arEvent) if (ExecuteModuleEventEx($arEvent, Array(&$arFields))===false) return false; } [/CODE] |
Самое подходящее событие из нового ядра: [B]OnSaleBasketItemBeforeSaved[/B]
Но с ним возникает несколько вопросов:
1) почему это событие вызывается для уже имеющихся товаров в корзине? Зачем их пересохранять?
2) это событие вызывается уже после [CODE]$result = \Bitrix\Sale\Compatible\BasketCompatibility::add($arFields);[/CODE]
А мне нужно добавлять свойство (выполнить свой код) до выполнения add(). Какое событие использовать в этом случае?
3) или как приведенный выше код из старого ядра переписать с использованием нового ядра?