Получить товары из корзины

1-ый способ: D7

Получить товары из корзины можно через метод $basket->getBasketItems().

use \Bitrix\{Sale, Main};
Main\Loader::includeModule('sale');

$basket = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Main\Context::getCurrent()->getSite());
$basketItems = $basket->getBasketItems();

foreach ($basketItems as $basketItem) {
  $basketItem->getId();          // ид записи в корзине
  $basketItem->getProductId();   // ид товара
  $basketItem->getField('NAME'); // название товара

  $basketItem->getQuantity(); // количество товара в корзине
  $basketItem->getWeight();   // вес товара

  $basketItem->getFinalPrice();    // итоговая цена
  $basketItem->getPrice();         // цена с учётом скидок
  $basketItem->getBasePrice();     // цена без учёта скидок
  $basketItem->getDiscountPrice(); // величина скидки
}

Метод Fuser::getId() возвращает ИД корзины текущего пользователя.

2-ой способ: ORM

Получить товары из корзины можно прямым запросом из базы данных через ORM.

\Bitrix\Main\Loader::includeModule('sale');

$basketRes = \Bitrix\Sale\Internals\BasketTable::getList(array(
    'filter' => array(
        'FUSER_ID' => \Bitrix\Sale\Fuser::getId(),
        'ORDER_ID' => null,
        'LID' => SITE_ID,
        'CAN_BUY' => 'Y',
    )
));

while ($basketItem = $basketRes->fetch()) {
    $basketItem['NAME']; // имя товара
}

3-ий способ: старое API

Рекомендуется использовать для старых версий Битрикса.

Получить товары из корзины можно через функцию CSaleBasket::GetList().

$products_in_cart = CSaleBasket::GetList(
    array(), // сортировка
    array(
        'FUSER_ID' => CSaleBasket::GetBasketUserID(),
        'LID' => SITE_ID,
        'ORDER_ID' => NULL
    ),
    false, // группировать
    false, // постраничная навигация
    array('ID', 'NAME', 'PRODUCT_PRICE_ID', 'PRICE', 'CURRENCY', 'QUANTITY', 'DETAIL_PAGE_URL')
);

В последнем параметре указываются поля товаров, которые надо выбрать. Данный параметр не обязателен, но его рекомендуется указывать для ускорения выполнения кода.

Товары выводятся через следующий код:

// 1-ый способ
foreach ($products_in_cart->arResult as $product) {
    echo $product['NAME'];
    echo $product['PRICE'];
}

// 2-ой способ
while ($product = $products_in_cart->GetNext()) {
    echo $product['NAME'];
    echo $product['PRICE'];
}