Добавление в корзину
Внимание! Для работы с корзиной рекомендуется использовать методы ядра 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 | Массив, содержащий перечень свойств товара, добавленного в корзину. Ключи:
Примечание: до версии 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 | Массив, содержащий перечень свойств товара, добавленного в корзину. Ключи:
Примечание: до версии 11.0.2 элементы массива пронумерованы непрерывно, начиная с нуля.
| 11.5.7 |
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"); } } ?>