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

Add

int
   CSaleBasket::Add(
 array arFields
   );

Метод добавляет товар в корзину, если его ещё нет, и обновляет параметры товара с увеличением количества, если он уже находится в корзине. В массиве arFields перечисляются все параметры товара, которые нужны для работы модуля Интернет-магазина (т.е. этот модуль не зависит от других модулей и работает полностью самостоятельно). Нестатический метод.

Интернет-магазин не зависит от других модулей, поэтому товары в корзину модуля продаж могут добавляться из любого места (например, из торгового каталога или со статической страницы). Для некоторых модулей существуют функции - оболочки, облегчающие добавление товара в корзину (например, для модуля catalog существуют функции Add2Basket и Add2BasketByProductID).

Параметры вызова

ПараметрОписание
arFields Ассоциативный массив параметров элемента корзины, содержащий следующие ключи:
  • PRODUCT_ID - уникальный в рамках модуля код товара (обязательное поле);
  • PRODUCT_PRICE_ID - ID (идентификатор) конкретного ценового предложения товара, пришедшего в корзину. Может быть использован в классе CPrice модуля Catalog для получения детальной информации о цене.
  • PRICE - стоимость единицы товара (обязательное поле);
  • CUSTOM_PRICE Указывает на то могут ли, например, скидки изменять стоимость позиции или нет. Обычно этот флаг выставляется в административном отделе, когда в форме редактирования вручную правится цена. Значение Y/N (N - по умолчанию).
  • CURRENCY - валюта стоимости единицы товара (обязательное поле), если валюта отличается от базовой валюты для данного сайта, то стоимость будет автоматически сконвертирована по текущему курсу;
  • WEIGHT - вес единицы товара;
  • QUANTITY - количество единиц товара;
  • LID - сайт, на котором сделана покупка (обязательное поле);
  • DELAY - флаг "товар отложен" (Y/N);
  • CAN_BUY - флаг "товар можно купить" (Y/N) - может устанавливаться автоматически про наличии функции обратного вызова для поддержки актуальности корзины;
  • NAME - название товара (обязательное поле);
  • PRODUCT_XML_ID - внешний код товара (необходим при обмене заказами с 1С);
  • CATALOG_XML_ID - внешний код каталога (необходим при обмене заказами с 1С);
  • ORDER_ID - идентификатор заказа. Ключ будет пустым, если товар еще не добавлен в заказ;
  • CALLBACK_FUNC* - название функции обратного вызова для поддержки актуальности корзины (описание ниже);
  • MODULE - модуль, добавляющий товар в корзину;
  • NOTES - особые заметки, например, тип цены;
  • ORDER_CALLBACK_FUNC* - название функции обратного вызова для оформления заказа (описание ниже);
  • DETAIL_PAGE_URL - ссылка на страницу детального просмотра товара;
  • CANCEL_CALLBACK_FUNC* - название функции обратного вызова для отмены заказа (описание ниже);
  • PAY_CALLBACK_FUNC* - название функции обратного вызова, которая вызывается при установке флага "Доставка разрешена" заказа;
  • FUSER_ID - идентификатор пользователя интернет-магазина, необязательный параметр, по умолчанию CSaleBasket::GetBasketUserID() (текущий пользователь);
  • DISCOUNT_PRICE - величина скидки;
  • DISCOUNT_NAME - название скидки;
  • DISCOUNT_VALUE - размер скидки (в процентах);
  • DISCOUNT_COUPON - купон скидки;
  • PROPS - массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата:
    array("NAME" => "Название свойства",
          "CODE" => "Код свойства", 
          "VALUE" => "Значение свойства", 
          "SORT" => "Индекс сортировки")
  • PRODUCT_PROVIDER_CLASS** - содержит имя класса, реализующего интерфейс IBXSaleProductProvider. Торговый каталог записывает в это поле имя класса CCatalogProductProvider. Если поле пусто, то возникает попытка использовать старые поля:CALLBACK_FUNC, ORDER_CALLBACK_FUNC, CANCEL_CALLBACK_FUNC и PAY_CALLBACK_FUNC.
  • IGNORE_CALLBACK_FUNC Y\N. По умолчанию N. Если выставить параметру Y то CALLBACK_FUNC и PRODUCT_PROVIDER_CLASS вызываться не будут.

* - поля считаются устаревшими, начиная с версии 12.5. Вместо них используется PRODUCT_PROVIDER_CLASS.
** - поле доступно, начиная с версии 12.5.

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

Метод возвращает код элемента корзины, в который попал данный товар.

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

<?
if (CModule::IncludeModule("sale"))
{
$arFields = array(
"PRODUCT_ID" => 51,
"PRODUCT_PRICE_ID" => 0,
"PRICE" => 138.54,
"CURRENCY" => "RUB",
"WEIGHT" => 530,
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => "Чемодан кожаный",
"CALLBACK_FUNC" => "MyBasketCallback",
"MODULE" => "my_module",
"NOTES" => "",
"ORDER_CALLBACK_FUNC" => "MyBasketOrderCallback",
"DETAIL_PAGE_URL" => "/".LANG."/detail.php?ID=51"
);

$arProps = array();

$arProps[] = array(
"NAME" => "Цвет",
"CODE" => "color",
"VALUE" => "черный"
);

$arProps[] = array(
"NAME" => "Размер",
"VALUE" => "1.5 x 2.5"
);

$arFields["PROPS"] = $arProps;

CSaleBasket::Add($arFields);
}
?>

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

//пример на проверку создания покупателя

$userId=XXX;//id пользователя
//получаем FUSER_ID, если покупатель для данного пользователя существует
$FUSER_ID=CSaleUser::GetList(array('USER_ID' => $userId));
//если покупателя нет - создаем его
if(!$FUSER_ID['ID'])                  
       $FUSER_ID['ID']=CSaleUser::_Add(array("USER_ID" => $userId)); //обратите внимание на нижнее подчеркивание перед Add
//если не получается создать покупателя - то тут уж ничего не поделаешь
if(!$FUSER_ID['ID']){         
 echo "Error while creating SaleUser";      
 die();      
}
$FUSER_ID=$FUSER_ID['ID'];
//теперь переменную $FUSER_ID можно использовать для добавления товаров в корзину пользователя с $userId.

Смотрите также:



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

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

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

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх