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

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

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

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

Add2Basket


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


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-2023, «1С-Битрикс», 2023