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

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

Внимание! Для работы с корзиной рекомендуется использовать методы ядра 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");
	}
}
?>

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




Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
9
Константин Кербицкий
Чтобы просмотреть текст ошибки, необходимо после функции написать следующее:
Код
if ($ex = $APPLICATION->GetException())
echo '<br>'.$ex->GetString();
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх