$fuser=\Bitrix\Sale\Fuser::getIdByUserId($arUser['ID']);
// Получение корзины для текущего пользователя
$basket = \Bitrix\Sale\Basket::loadItemsForFUser( $fuser, 's1' );
$arParams['CATALOG_XML_ID']=array(
'NAME' => 'Catalog XML_ID',
'CODE' => 'CATALOG.XML_ID',
'VALUE' => $obEl['IBLOCK_EXTERNAL_ID']
);
$arParams['PRODUCT_XML_ID']=array(
"NAME" => "Product XML_ID",
"CODE" => "PRODUCT.XML_ID",
"VALUE" => $obEl['XML_ID']
);
$item = $basket->createItem('catalog', $obEl['ID']); //создаём новый товар в корзине
$item->setFields(array(
'QUANTITY' => 1,
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => 's1',
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
"CATALOG_XML_ID" => $obEl['IBLOCK_EXTERNAL_ID'],
"PRODUCT_XML_ID" => $obEl['XML_ID'],
'CUSTOM_PRICE'=>'Y',//используется custom, так как у нас идет подмена цены на скидочную, по своим правилам
'PRICE' => $PlProductInfo['PRICE']
));
$item->getPropertyCollection()->setProperty($arParams);
//Сохранение изменений корзины
$basket->save();
надо взять общую сумму и вычесть из нее сумму скидки
//название товара не пишем
Bitrix\Main\Loader::includeModule("catalog");
$fields = [
'PRODUCT_ID' => $item[offer_id], // ID товара, обязательно
'QUANTITY' => $item[quantity],
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'PRICE' => $item[price], //твоя кастомная цена
'CUSTOM_PRICE' => 'Y',
];
$r = Bitrix\Catalog\Product\Basket::addProduct($fields);
if (!$r->isSuccess()) {
var_dump($r->getErrorMessages());
}
<?
global $mySmartFilter = [];
$mySmartFilter = ['ID' => [100,101,200,300,311]];
global $arrFilter;
$arrFilter = [];
$APPLICATION->IncludeComponent(
"bitrix:catalog.smart.filter",
"",
Array(
...
"PREFILTER_NAME" => "mySmartFilter",
"FILTER_NAME" => "arrFilter",
...
)
);?>
Если разрешение есть, то два варианта я знаю)