Документация для разработчиков
Темная тема

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

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

Модуль торгового каталога включает в себя функции-оболочки для работы с модулем продаж:

Add2Basket


Внимание! Функция Add2Basket устарела и не поддерживается с версии модуля catalog 16.5.0.


int Add2Basket(  int PRICE_ID[,
	int QUANTITY = 1[,
	array arRewriteFields = array()[,
	array arProductParams = array()]]]
);

Функция добавляет в корзину товар с кодом цены PRICE_ID в количестве QUANTITY единиц (по умолчанию одну штуку) и возвращает код позиции товара в корзине. Функция является оберткой над CSaleBasket::Add, но при этом размещена в модуле Торгового каталога.

Параметры функции

Параметр Описание
PRICE_IDКод цены товара.
QUANTITY Количество добавляемых единиц товара (по умолчанию - одна штука)
arRewriteFields Массив ключей для класса корзины соответствует одноимённому массиву класса CSaleBasket, за исключением ключа module_id.
arProductParams Массив, содержащий перечень свойств товара, добавленного в корзину. Ключи:
  • NAME - название свойства;
  • CODE - символьный код свойства;
  • VALUE - значение свойства;
  • SORT - сортировка.

Примечание: до версии 11.0.2 элементы массива пронумерованы непрерывно, начиная с нуля.

Возвращаемое значение

Код вставленной в корзину записи или False в случае ошибки.

Возможные ошибки:

  • не установлен модуль Интернет-магазин;
  • попытка поискового бота добавить товар в корзину (только при наличии модуля Веб-аналитика и вычисления бота на основе UserAgent);
  • для указанного количества отсутствует цена либо нет типов цен, по которым пользователь может покупать;
  • нет прав на чтение элемента инфоблока, цена которого добавляется в корзину.

Пример использования

<?
if (CModule::IncludeModule("catalog"))
{
	if (($action == "ADD2BASKET" || $action == "BUY") && IntVal($PRICE_ID)>0)
	{
		Add2Basket(
			$PRICE_ID,
			2,
			array(),
			array(
				array("NAME" => "Цвет", "CODE" => "CLR", "VALUE" => "красный"),
				array("NAME" => "Размер", "VALUE" => "25")
			)
		);
		if ($action == "BUY")
			LocalRedirect("basket.php");
	}
}
?>

Add2BasketByProductID


Внимание! Функция Add2BasketByProductID устарела и не поддерживается с версии модуля catalog 16.5.0. Используйте метод \Bitrix\Catalog\Product\Basket::addProduct.


int Add2BasketByProductID( int PRODUCT_ID[, int QUANTITY = 1[, array arProductParams = array()]]
);

После версии 11.5.7 доступен новый вариант вызова (старый вызов сохраняет свою работоспособность):

int Add2BasketByProductID( $PRODUCT_ID, $QUANTITY = 1, $arRewriteFields = array(), $arProductParams = false);

Функция добавляет в корзину товар с кодом PRODUCT_ID в количестве QUANTITY единиц (по умолчанию одну штуку) и возвращает код позиции товара в корзине. Функция является оберткой над CSaleBasket::Add, но при этом размещена в модуле Торгового каталога.

Параметры функции

Параметр Описание С версии
PRODUCT_IDКод товара.
QUANTITY Количество добавляемых единиц товара (по умолчанию - одна штука)
arRewriteFields Массив ключей для класса корзины соответствует одноимённому массиву класса CSaleBasket. 11.5.7
arProductParams Массив, содержащий перечень свойств товара, добавленного в корзину. Ключи:
  • NAME - название свойства;
  • CODE - символьный код свойства;
  • VALUE - значение свойства;
  • SORT - сортировка.

Примечание: до версии 11.0.2 элементы массива пронумерованы непрерывно, начиная с нуля.

11.5.7

Примечание: если при использовании функции необходимо передать массив arRewriteFields, но при этом массив arProductParams передавать не нужно, то массив свойств товара следует передать пустым, например:
Add2BasketByProductID(
	$PRODUCT_ID, 
	$QUANTITY, 
	array('ORDER_ID' => intval($arItems['ORDER_ID'])), 
	array()
);

Возвращаемое значение

Код вставленной в корзину записи или False в случае ошибки.

Возможные ошибки:

  • не установлен модуль Интернет-магазин;
  • попытка поискового бота добавить товар в корзину (только при наличии модуля Веб-аналитика и вычисления бота на основе UserAgent);
  • отсутствующая цена или невозможность покупать по данному типу цен для пользователя;
  • нет прав на чтение элемента инфоблока, цена которого добавляется в корзину.

Пример использования

<?
if (CModule::IncludeModule("catalog"))
{
	if (($action == "ADD2BASKET" || $action == "BUY") && IntVal($PRODUCT_ID)>0)
	{
		Add2BasketByProductID(
			$PRODUCT_ID,
			2,
			array(
				array("NAME" => "Цвет", "CODE" => "CLR", "VALUE" => "красный"),
				array("NAME" => "Размер", "VALUE" => "25")
			)
		);
		if ($action == "BUY")
			LocalRedirect("basket.php");
	}
}
?>

Примечание: пример создан для старого формата записи. Совместимость с новым сохранена.




© «Битрикс», 2001-2024, «1С-Битрикс», 2024