@pavelmosin

Bitrix. Как применить функцию только к добавляемому в корзину товару?

Добрый день.

Меняю цену товара при добавлении в корзину на свою.
В init.php этот код меняет цену товара на 2000 для всех товаров в корзине.

Как изменить цену только для одного, добавляемого товара?

class CCatalogProductProviderCustom extends CCatalogProductProvider {

			public static function GetProductData($arParams) {


				$arResult = parent::GetProductData($arParams);

				$i++;

				$arResult = [
					'BASE_PRICE' => '2000', // ПРИМЕНЯЕТСЯ КО ВСЕМ ТОВАРАМ В КОРЗИНЕ
				]
				+
				$arResult;


				return $arResult;
			}
		}


		addEventHandler(
			'sale',
			'OnSaleBasketItemRefreshData',
			'BeforeBasketAddHandler'
		);


		function BeforeBasketAddHandler($BasketItem) {

			$BasketItem->setField(
				"PRODUCT_PROVIDER_CLASS",
				"CCatalogProductProviderCustom"
			);
		}
  • Вопрос задан
  • 859 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Snatch87
Битриксоид по принуждению
Могу предложить несколько вариантов на пробу:
1) вместо setField попробуйте setFieldNoDemand
2) после setField $basketItem->save();
3) у объекта класса BasketItem есть метод setPrice
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы