Стоит задача, узнать, есть ли подарки для данного товара, если есть, получить этот товар и вывести значок наличия подарка.
Использовал код из компонента sale.gift.product.
Получается следующее:[CODE] global $USER;
$userId = $USER instanceof CAllUser ? $USER->getId() : null;
$giftManager = \Bitrix\Sale\Discount\Gift\Manager::getInstance()->setUserId($userId);
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID);
$product = array(
'ID' => $element_id,
'MODULE' => 'catalog',
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
'QUANTITY' => 1,
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
);
$collections = $giftManager->getCollectionsByProduct($basket, $product);
[/CODE]Но пока товара явно нет в корзине, ничего дельного не получу.
Пробовал создавать копию корзины и вручную добавлять товар.[CODE] $pseudoBasket = $basket->copy();
$item = $pseudoBasket->createItem('catalog', $element_id);
$item->setFields(array(
'QUANTITY' => 1,
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
));
$pseudoBasket->save();
[/CODE]Но товар добавляется в основную.
А без $pseudoBasket->save(); подарки не видны.
Чувствую, что близко, но не знаю, как сделать правильно.
Использовал код из компонента sale.gift.product.
Получается следующее:[CODE] global $USER;
$userId = $USER instanceof CAllUser ? $USER->getId() : null;
$giftManager = \Bitrix\Sale\Discount\Gift\Manager::getInstance()->setUserId($userId);
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID);
$product = array(
'ID' => $element_id,
'MODULE' => 'catalog',
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
'QUANTITY' => 1,
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
);
$collections = $giftManager->getCollectionsByProduct($basket, $product);
[/CODE]Но пока товара явно нет в корзине, ничего дельного не получу.
Пробовал создавать копию корзины и вручную добавлять товар.[CODE] $pseudoBasket = $basket->copy();
$item = $pseudoBasket->createItem('catalog', $element_id);
$item->setFields(array(
'QUANTITY' => 1,
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
));
$pseudoBasket->save();
[/CODE]Но товар добавляется в основную.
А без $pseudoBasket->save(); подарки не видны.
Чувствую, что близко, но не знаю, как сделать правильно.