Если вы хотите проверить, есть ли торговые предложения товара в корзине, используя метод CSaleBasket::GetList, то вам нужно сначала получить список торговых предложений текущего товара, а затем проверить их наличие в корзине.
Код |
---|
$offerList = CIBlockPriceTools::GetOffersArray(
array(
'IBLOCK_ID' => $arParams['IBLOCK_ID']
),
array(
$arResult['ID']
),
false,
array(
'ID'
),
false,
false,
false,
false,
false,
false,
false
);
$offerIds = array_column($offerList, "ID"); // Получаем ID торговых предложений
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"PRODUCT_ID" => $offerIds, // Проверяем наличие торговых предложений в корзине
"ORDER_ID" => "NULL",
"DELAY" => "N"
),
false,
false,
array("PRODUCT_ID")
);
$hasOffersInCart = false;
while ($arItemsBasket = $dbBasketItems->Fetch()) {
if (in_array($arItemsBasket['PRODUCT_ID'], $offerIds)) {
$hasOffersInCart = true;
break;
}
}
|
В этом примере мы сначала получаем список торговых предложений для текущего товара с помощью CIBlockPriceTools::GetOffersArray. Затем из этого списка извлекаем ID торговых предложений.
Затем мы используем CSaleBasket::GetList для проверки наличия этих торговых предложений в корзине. Если хотя бы одно из торговых предложений присутствует в корзине, то ITEM_HAS_OFFERS_IN_CART будет установлено в true.