Рассмотрим задачу! Необходимо при добавлении товара в корзину, добавить дополнительный товар автоматически с помощью API BItrix, к примеру, если это упаковка. И сделать проверку на наличие товара в корзине.
делаем следующую манипуляцию
С помощью метода в D7 пишем
1 2 3 4 5 6 7 8 |
<? Bitrix\Main\Loader::includeModule("catalog"); $fields = [ 'PRODUCT_ID' => 3479, 'QUANTITY' => 1, ]; $r = Bitrix\Catalog\Product\Basket::addProduct($fields); ?> |
Таким образом наш товар добавится в корзину, как только сработает скрипт, но если клиент перейдет на эту страницу еще раз, то товар добавится еще раз по количеству, т.е. необходима проверка, в случае если этот товар уже добавлен в корзину, то добавлять его не нужно
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<? Bitrix\Main\Loader::includeModule("catalog"); $BasketTov = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "PRODUCT_ID" => 3479, //ID текущего товара "ORDER_ID" => "NULL", "DELAY" => "N" //Исключая отложенные ), false, false, array("PRODUCT_ID") ); while ($arBasketTov = $BasketTov->Fetch()) { $itInBasket = $arBasketTov['PRODUCT_ID']; } if (isset($itInBasket)) {?> Сюда добавление <?}?> |
Полный скрипт добавления товара в корзину выглядит так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<? Bitrix\Main\Loader::includeModule("catalog"); $BasketTov = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "PRODUCT_ID" => 3479, //ID моего товара упаковки "ORDER_ID" => "NULL", "DELAY" => "N" //Исключая отложенные ), false, false, array("PRODUCT_ID") ); while ($arBasketTov = $BasketTov->Fetch()) { $itInBasket = $arBasketTov['PRODUCT_ID']; } if (isset($itInBasket)) {?> <? $fields = [ 'PRODUCT_ID' => 3479, //ID моего товара упаковки 'QUANTITY' => 1, ]; $r = Bitrix\Catalog\Product\Basket::addProduct($fields); if (!$r->isSuccess()) { //ну и проверочка, для дебага var_dump($r->getErrorMessages()); }?> <?}?> |
Здраствуйте!
День добрый! Ошибочка в место if (isset($itInBasket)) , должно быть if (!isset($itInBasket))