Меню Закрыть

Bitrix добавление товара в корзину

Содержание

Добавить товар в корзину через PHP можно с помощью функции Add2BasketByProductID() .

По умолчанию в корзину добавляется один товар. Во втором параметре можно указать количество добавляемого товара.

2-ой способ: JavaScript

Чтобы добавить товар в корзину через JavaScript, надо сделать Ajax-запрос на текущую страницу, добавив два GET параметра «/current-page ?action=ADD2BASKET& >».

Данный код можно выполнять на любой странице.

Начиная с 16 версии используется новая версия ядра магазина Битрикс, являющаяся частью ядра Битрикс D7. Но некоторые классы и методы доступны и в 15 версии магазина (sale, не main). Все классы для работы с магазином собраны в модуле sale, поэтому для работы с примерами в статье используем use для пространства имён модуля интернет-магазина.

Корзина (SaleBasket)

Корзина представляет собой экземпляр класса BitrixSaleBasket.

Корзину можно получить для текущего юзера:

Примечание: getSite работает только в публичной части.

Или получить корзину заказа:

Информация о корзине:

Добавление товара в корзину (аналог CSaleBasket::Add), обновление записи и проверка наличия:

В одной из новых версий модуля catalog был добавлен функционал добавления в корзину:

Данный метод проверяет доступность товара к покупке (при отсутствии будет возвращен результат с ошибкой "Товар отсутствует"), сам проверяет наличие товара в корзине и при наличии увеличивает количество товара в корзине. Также к товару добавляются свойства корзины, необходимые для обмена с 1С: PRODUCT.XML_ID и CATALOG.XML_ID. Но при этом нет возможности передать в корзину кастомную цену.

Получение записи по ID и удаление записи из корзины (аналог CSaleBasket::Delete):

Получение товаров в корзине, доступных для покупки (CAN_BUY=Y):

Также есть пара методов для получения корзины в виде, пригодной для использования в письме или для вывода количества товаров:

Читайте также:  Как задать межстрочный интервал в html

Товар в корзине (SaleBasketItem)

Товары в корзине представлены в виде коллекции объектов класса BitrixSaleBasketItem:

SaleBasket реализует интерфейсы ArrayAccess, Countable и IteratorAggregate, поэтому с объектом корзины можно обращаться как с массивом, получая товары в корзине по индексу или перебирая записи с помощью foreach:

Информация о товарах в корзине:

Также из записи можно получить другие сущности:

Действия над записями:

Свойства товаров в корзине (SaleBasketPropertiesCollection)

У товара в корзине можно получить коллекцию свойств — объект BitrixSaleBasketPropertiesCollection:

Метод getPropertyValues возвращает массив свойств.

Добавить новое свойство или изменить существующие можно следующим образом:

Пример удаления свойства:

ORM-классы

Обращаться напрямую к таблице корзины, без использования объектов можно с использованием ORM-класса BitrixSaleInternalsBasketTable. Например, перебрать товары в корзине текущего пользователя:

А таким образом можем получить количество и сумму товаров в корзине текущего юзера:

Получить свойства товаров в корзине поможет класс BitrixSaleInternalsBasketPropertyTable:

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

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

Add2Basket

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

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

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

  • NAME — название свойства;
  • CODE — символьный код свойства;
  • VALUE — значение свойства;
  • SORT — сортировка.
Читайте также:  Монитор растянут по горизонтали

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

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

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

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

Add2BasketByProductID

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

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

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

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

  • NAME — название свойства;
  • CODE — символьный код свойства;
  • VALUE — значение свойства;
  • SORT — сортировка.

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

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

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

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

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

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

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

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

Читайте также:  Как дефрагментировать диск через биос

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.