Добавление в корзину на D7

2011
Алексей,

Пример для добавления товара в корзину на API Bitrix D7: актуальный, правильный, быстрый.

// Подключаем нужные модули, если необходимо
\Bitrix\Main\Loader::includeModule('sale');
\Bitrix\Main\Loader::includeModule('catalog');

// Получаем корзину пользователя
$basket = \Bitrix\Sale\Basket::LoadItemsForFUser(
	\Bitrix\Sale\Fuser::getId(),
	SITE_ID
);

// Добавляем товар в корзину, можно добавить несколько товаров, вызвав addProductToBasket для каждого
$product = array('PRODUCT_ID' => 312, 'QUANTITY' => 1);
$result = \Bitrix\Catalog\Product\Basket::addProductToBasket($basket, $product, array('SITE_ID' => SITE_ID));

// Сохраняем корзину в БД. 
// Если корзина была взята из заказа $basket = $order->getBasket(), то нужно сохранять заказ, а не корзину.
if (!$result->isSuccess()) {
	var_dump($result->getErrorMessage());
}
$basket->save();

Работает где-то с 18 версии ядра. Более подробно рассказывали на вебинаре.

Опубликовано 9 февраля 2020 | Обновлено 19 ноября 2020
примеры d7, интернет-магазин, корзина, видео
Похожие статьи
Покупка в 1 клик, минимальный код 0
Частая задача для интернет-магазина на 1С-Битрикс. В примере показаны все этапы минимально необходим...
Читать дальше »
Алексей,
Получаем состав набора 0
Получение состава комплекта или набора через апи битрикс
Читать дальше »
Алексей,
Комментарии
Павел
16 июл 2020
Не подскажешь? Все супер. Все добавляется, но не обновляется счетчик малой корзины. Пока не зайдет в саму корзину , будет показывать 0. Как дописать этот код?
Алексей
Алексей
16 июл 2020
Павел, счетчик обновляется после перезагрузки страницы? Если да, самый простой вариант - сделать ajax запрос и обновить малую корзину.
Павел
16 июл 2020
Алексей, не, не обновляется после перезагрузки. Обновляется только когда в саму корзину зайдешь
Алексей
Алексей
16 июл 2020
Павел, обычно есть js метод для увеличения счетчика. Т.е. при добавлении в корзину нужно выполнить js код и счетчик увеличиться. Как устроено у Вас не знаю. Можете попробовать сделать ajax запрос на страницу корзины, раз там верная информация.
Павел
16 июл 2020
Алексей, благодарю
Павел
16 июл 2020
Алексей, сори. Я сделал почти как ты сказал.
1. Создал обработчик, где использую api CSaleBasket::GetList и далее записываю в переменную количество товаров. Потом echo json_encode($cntBasketItems);
2. На странице товара повесил событие $.get('путь').done(function(data) (json) и получаю данные из обработчика. Все корректно приходит и счетчик обновляется.
Как теперь запомнить сиё ? Потому что поле перезагрузки счётчик опять ноль)
Алексей
Алексей
16 июл 2020
Павел, что-то с малой корзиной не так. В кешируемой области может находиться? Почему в ней счетчик после обновления страницы не меняется? Вот с этим нужно разобраться.
Павел
16 июл 2020
Алексей, решилось. Спасибо за советы!
irma
2 мар 2020
Очень полезная информация