Как поменять свойство товара в корзине

Алексей Будагов,
Как поменять свойство товара в корзине

Немного "плохого" кода для выбора параметра товара в корзине. Например когда Вы не хотите использовать торговые предложения, но Вам нужно знать какой именно товар нужен покупателю (например какого цвета или размера). Код плохой потому что на старом ядре и отдельным запросом к серверу.

Как сделать?

1. Включаем в настройках каталога передачу нужно параметра в корзину.
2. Даем возможность выбрать нужный параметр на странице товара (если необходимо) или передайте любое значение (можно добавить к ссылке добавления в корзину строку &prop%5BSIZE%5D=<?=current($arResult['PROPERTIES']['SIZE']['VALUE'])?>)
3. В корзине, у каждого товара будет массив с ключем PROPS, в нем будет хранится выбранное на шаге 2 значение.
4. Добавляем выпадающий список и при его изменении отправляем ajax запрос на файл с таким кодом:
<?
define('STOP_STATISTICS', true);
define('PUBLIC_AJAX_MODE', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

global $APPLICATION;
CModule::IncludeModule('sale');

$arFields = array(
	"PROPS" => array(
   	    array(
   	    	"NAME"  => "Размер",
	        "CODE"  => "SIZE",
	        "VALUE" => htmlspecialcharsbx($_REQUEST['size']),
	        "SORT"  => "100"
        ),
	),
);

$APPLICATION->RestartBuffer();

if (CSaleBasket::Update(IntVal($_REQUEST['id']), $arFields)) {
	echo 'OK';
} else {
	echo $APPLICATION->GetException()->GetString();
}

require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_after.php');
?>

Извиняюсь, что не расписываю все 4 пункта, но там уж у каждого проекта по своему.

Опубликовано 15 Июня 2018

Возврат к списку

Комментарии