В документации необходимость данной функции объясняется следующим образом: Функция обратного вызова вызывается (если установлена) при каждом чтении корзины для обновления параметров содержащихся в корзине товаров. Например, если после добавления товара в корзину изменилась его цена или товар сняли с продажи, то использование функции обратного вызова позволяет соответственно обновить данные в корзине.
Объясните кто-нибудь, как этой функцией пользоваться. Создаю свою функцию в init.php, прописываю название в методе CSaleBasket::Add. Но в итоге товары, добавляемые в корзину попадают в категорию "Отсутствующие в магазине". В документации приведен следующий пример подобной функции, которая изменяет кол-во товара:
<?
function MyBasketCallback($PRODUCT_ID, $QUANTITY = 0)
{
$arResult = array();
$iProductQuantity = GetProductQuantity($PRODUCT_ID);
if ($iProductQuantity<=0)
return $arResult; // товар кончился, возвращаем пустой массив
$arResult = array(
"PRODUCT_PRICE_ID" => 0,
"PRICE" => 125.2,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"NAME" => "Чемодан кожаный",
"CAN_BUY" => "Y"
);
if (IntVal($QUANTITY)>0 && ($iProductQuantity-$QUANTITY)<0)
$arResult["QUANTITY"] = $iProductQuantity; // товара осталось
// меньше, чем в корзине, поэтому уменьшаем
// количество товара в корзине
return $arResult;
}
?>
Мне нужно изменить свойство товара на основе данных о его кол-ве. Нужно ли в этой функции мне вызывать метод CSaleBasket::Update или просто подготовить массив с параметрами $arResult?
Объясните кто-нибудь, как этой функцией пользоваться. Создаю свою функцию в init.php, прописываю название в методе CSaleBasket::Add. Но в итоге товары, добавляемые в корзину попадают в категорию "Отсутствующие в магазине". В документации приведен следующий пример подобной функции, которая изменяет кол-во товара:
<?
function MyBasketCallback($PRODUCT_ID, $QUANTITY = 0)
{
$arResult = array();
$iProductQuantity = GetProductQuantity($PRODUCT_ID);
if ($iProductQuantity<=0)
return $arResult; // товар кончился, возвращаем пустой массив
$arResult = array(
"PRODUCT_PRICE_ID" => 0,
"PRICE" => 125.2,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"NAME" => "Чемодан кожаный",
"CAN_BUY" => "Y"
);
if (IntVal($QUANTITY)>0 && ($iProductQuantity-$QUANTITY)<0)
$arResult["QUANTITY"] = $iProductQuantity; // товара осталось
// меньше, чем в корзине, поэтому уменьшаем
// количество товара в корзине
return $arResult;
}
?>
Мне нужно изменить свойство товара на основе данных о его кол-ве. Нужно ли в этой функции мне вызывать метод CSaleBasket::Update или просто подготовить массив с параметрами $arResult?