Как поменять свойство товара в корзине
Немного "плохого" кода для выбора параметра товара в корзине. Например когда Вы не хотите использовать торговые предложения, но Вам нужно знать какой именно товар нужен покупателю (например какого цвета или размера). Код плохой потому что на старом ядре и отдельным запросом к серверу.
Как сделать?
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 пункта, но там уж у каждого проекта по своему.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.