@pavelmosin

Bitrix. Как изменить цену товара в корзине на свою?

Добрый день.
Есть товар, на детальной карточке написан калькулятор выбора дополнительных опций.
При покупке, соответственно, стоимость опций не применяется, а остаётся базовой.
Как можно изменить цену базовую на ту цену, которая посчиталась на детальной?

Смотрел этот гайд , метод 3. Но не понял, куда этот код вставлять?

Спасибо.
  • Вопрос задан
  • 6575 просмотров
Пригласить эксперта
Ответы на вопрос 1
Инструкция верная

В init.php

1. Наследуете свой Provider
class CCatalogProductProviderCustom extends CCatalogProductProvider
{
	public static function GetProductData($arParams)
	{
                   //Чтобы не переписывать всю логику наследуемся от родителя
                   $arResult = parent::GetProductData($arParams);
                   
                  //Ниже описываем свою логику подменяем данные в  $arResult
                 return $arResult;
        }
}


2. Также в init.php объявляем свой обработчик цен. Т.е. свой класс "CCatalogProductProviderCustom"
AddEventHandler('sale', 'OnSaleBasketItemRefreshData', 'BeforeBasketAddHandler');
function BeforeBasketAddHandler($BasketItem)
{
	$BasketItem->setField("PRODUCT_PROVIDER_CLASS", "CCatalogProductProviderCustom");
}


3. Удаляем все товары из корзины и добавляем по новой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы