Почему ни одним способом нельзя изменить цену товар в коризне
например делал так:
[CODE]AddEventHandler("sale", "OnBasketAdd", "CheckZaprPrice");
AddEventHandler("sale", "OnBasketUpdate", "CheckZaprPrice");
function CheckZaprPrice($ID, $arFields)
{
...
}
в этой функции через CSaleBasket::Update менял цену
[/CODE]но в стандартном компоненте битрикса корзины все равно цена из иб
пытался и так
[CODE]AddEventHandler('sale', 'OnBeforeBasketAdd', 'OnBeforeBasketAddHandler');
function OnBeforeBasketAddHandler(&$arFields) {
$arFields['CALLBACK_FUNC'] = 'MyBasketCallback';
}
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,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"NAME" => "Чемодан кожаный",
"CAN_BUY" => "Y"
);
return $arResult;
}
[/CODE]
тоже не работает
инструкция нормальных нет
и как быть?
и так пробовал
[CODE]CModule::IncludeModule("catalog");
class CCatalogProductProviderCustom extends \Bitrix\Catalog\Product\CatalogProvider
{
public function GetProductData($params)
{
//Получение готового массива цен
$result = parent::GetProductData($params);
$arResults = $result->getData();
$arResults['PRICE'] = 100;
$arResults['BASE_PRICE'] = 100;
$result->setData($arResults);
return $result;
}
}
AddEventHandler('sale', 'OnSaleBasketItemRefreshData', 'BeforeBasketAddHandler');
function BeforeBasketAddHandler($BasketItem)
{
$BasketItem->setField("PRODUCT_PROVIDER_CLASS", "CCatalogProductProviderCustom");
$BasketItem->setField("CUSTOM_PRICE", "Y");
}
[/CODE]
как мне менять цену при добавлении в корзину или изменении колва любого товара в корзине ???
например делал так:
[CODE]AddEventHandler("sale", "OnBasketAdd", "CheckZaprPrice");
AddEventHandler("sale", "OnBasketUpdate", "CheckZaprPrice");
function CheckZaprPrice($ID, $arFields)
{
...
}
в этой функции через CSaleBasket::Update менял цену
[/CODE]но в стандартном компоненте битрикса корзины все равно цена из иб
пытался и так
[CODE]AddEventHandler('sale', 'OnBeforeBasketAdd', 'OnBeforeBasketAddHandler');
function OnBeforeBasketAddHandler(&$arFields) {
$arFields['CALLBACK_FUNC'] = 'MyBasketCallback';
}
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,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"NAME" => "Чемодан кожаный",
"CAN_BUY" => "Y"
);
return $arResult;
}
[/CODE]
тоже не работает
инструкция нормальных нет
и как быть?
и так пробовал
[CODE]CModule::IncludeModule("catalog");
class CCatalogProductProviderCustom extends \Bitrix\Catalog\Product\CatalogProvider
{
public function GetProductData($params)
{
//Получение готового массива цен
$result = parent::GetProductData($params);
$arResults = $result->getData();
$arResults['PRICE'] = 100;
$arResults['BASE_PRICE'] = 100;
$result->setData($arResults);
return $result;
}
}
AddEventHandler('sale', 'OnSaleBasketItemRefreshData', 'BeforeBasketAddHandler');
function BeforeBasketAddHandler($BasketItem)
{
$BasketItem->setField("PRODUCT_PROVIDER_CLASS", "CCatalogProductProviderCustom");
$BasketItem->setField("CUSTOM_PRICE", "Y");
}
[/CODE]
как мне менять цену при добавлении в корзину или изменении колва любого товара в корзине ???