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