Битрикс – как добавить свойства товара в корзину

Добавление свойств в корзину нужно использовать, когда по какой-то причине функционала торговых предложений (SKU) недостаточно.

Как в битриксе добавить свойства товара в корзину и заказ

Рассмотрим, как это работает на примере самописного решения.
Add2BasketByProductID – в качестве одного из параметра принимает массив свойств, он то нам и нужен:

Add2BasketByProductID(
	$_REQUEST['id'],
	$_REQUEST['count'],
	$propArr
);

Нас в данном коде интересует $propArr. В общем-то он имеет незамысловатую структуру в виде массива:

$propArr[] = array("NAME" => "Размер", "CODE" => "SIZE_CHECK", "VALUE" => $_REQUEST['size']);

Имя, код и значение – соответственно NAME, CODE, VALUE.

Полностью страница обработчик нашего AJAX будет иметь такой вид:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if (CModule::IncludeModule("catalog")) {
	if ($_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
		);
	}
}

Если $_REQUEST[‘size’] передан в запросе – добавляем свойство в корзину и оформление заказа.
Код на JS будет выглядеть так:

$(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;
		});

		return false;
	});
});

Битрикс позволяет подхватывать свойства товара передаваемые в заказ таким образом. Правда на стоимость товара это никак не влияет, лишь в качестве дополнительной информации. Данный функционал встречаю на сайтах, которые не используют логику SKU и торговых предложений, где 1 товар = 1 выбранной свойство (например, размер 42).

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *