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

14k
Алексей,

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

Пример для добавления товара в корзину на 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, интернет-магазин, корзина, видео
Поделиться
Похожие статьи
Какие скидки были применены к товарам в заказе
Нужен всего один метод OrderEdit::getOrderedDiscounts, его нет в документации, т.к. используется тол...
Читать дальше » 0
Алексей,
Покупка в 1 клик, минимальный код
Частая задача для интернет-магазина на 1С-Битрикс. В примере показаны все этапы минимально необходим...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
22 дек 2020
А куда вписать этот код? что бы с детальной старницы товара добавить несколько товаров?
Алексей
22 дек 2020
Александр, не, это так не работает) Вам, если я правильно понял, надо сделать отдельный скрипт и отправлять на него данные (ajax`ом например), но это немного сложнее, чем просто вставить код добавления в корзину.
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
Алексей, решилось. Спасибо за советы!
2 мар 2020
Очень полезная информация
Пример для добавления товара в корзину на API Bitrix D7: актуальный, правильный, быстрый.