Стоит задача, узнать, есть ли подарки для данного товара, если есть, получить этот товар и вывести значок наличия подарка.
Использовал код из компонента sale.gift.product.
Получается следующее:
Но пока товара явно нет в корзине, ничего дельного не получу.
Пробовал создавать копию корзины и вручную добавлять товар.
Но товар добавляется в основную.
А без $pseudoBasket->save(); подарки не видны.
Чувствую, что близко, но не знаю, как сделать правильно.
Использовал код из компонента sale.gift.product.
Получается следующее:
| Код |
|---|
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); |
Пробовал создавать копию корзины и вручную добавлять товар.
| Код |
|---|
$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();
|
А без $pseudoBasket->save(); подарки не видны.
Чувствую, что близко, но не знаю, как сделать правильно.