Если функционала торговых предложений (SKU) недостаточно, можно передавать дополнительные свойства товара в корзину и заказ. Рассмотрим реализацию на примере самописного решения.
Как передать свойства через Add2BasketByProductID
Метод Add2BasketByProductID принимает массив свойств ($propArr), который позволяет добавить дополнительные параметры товара (например, размер или цвет).
Структура массива свойств
$propArr[] = array(
"NAME" => "Размер",
"CODE" => "SIZE_CHECK",
"VALUE" => $_REQUEST['size']
);-
NAME – название свойства (отображается в корзине).
-
CODE – символьный код свойства.
-
VALUE – значение (например, выбранный размер).
Пример PHP-обработчика (ajax_cart.php)
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if (CModule::IncludeModule("catalog") && $_REQUEST['id'] && $_REQUEST['count']) {
$propArr = array();
if (!empty($_REQUEST['size'])) {
$propArr[] = array(
"NAME" => "Размер",
"CODE" => "SIZE_CHECK",
"VALUE" => $_REQUEST['size']
);
}
Add2BasketByProductID(
$_REQUEST['id'],
$_REQUEST['count'],
$propArr
);
}
Если параметр size передан, свойство добавится в корзину и заказ.
JavaScript для отправки данных (jQuery)
$(document).ready(function() {
$('.js-ajax-prop').on('click', function() {
let $id = $(this).data('id'),
$count = $('#count').val(),
$size = $('#size').val();
$.ajax({
url: '/include/ajax_cart.php',
type: 'get',
cache: false,
data: {
'id': $id,
'count': $count,
'size': $size
}
}).done(function(data) {
$('.column1inner').html(data);
RSEC_BASKET_Refresh();
});
return false;
});
});Когда это полезно?
-
Если не используются SKU, но нужно передавать дополнительные параметры (например, размер или цвет).
-
Если свойства не влияют на цену, а нужны только для информации.
Этот метод часто применяется в интернет-магазинах, где товар имеет вариации без изменения цены.
Вывод:
С помощью Add2BasketByProductID можно гибко добавлять свойства товаров в корзину Битрикс, даже если не используются торговые предложения.