Стоит задача, узнать, есть ли подарки для данного товара, если есть, получить этот товар и вывести значок наличия подарка.
Использовал код из компонента 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(); подарки не видны.
Чувствую, что близко, но не знаю, как сделать правильно.