Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Дополнительное свойство товара в корзине

00 голосов
4
Здравствуйте!

У меня избитый многими вопрос о дополнительном свойстве товара в корзине. Есть сайт продажи футболок. На сайте необходимо, что бы пользователь в самом каталоге при покупке мог выбрать необходимый размер.

Искал в документации нашел описание функции CSaleBasket::Add, так же что для компонента catalog существуют функции-оболочки Add2Basket и Add2BasketByProductID.

В шаблоне каталога написал форму
Код
<form method="POST" action="/personal/cart/index.php">

размер:<input class='textfield' style='width:30px; text-align:right' name='SIZE' type='text'>


<input class='button' name='submit' type='submit' value=добавить>
<input type="hidden" name="id" value="<?=$arElement["ID"]?>">
<input type="hidden" name="price" value="<?=$arPrice[0]["PRICE"]?>">
<input type="hidden" name="action" value="ADD2BASKET">
<input type="hidden" name="PRODUCT_ID" value="<?=$arElement["ID"]?>">

</form>


И собственно в самой корзине прописал функцию

Код
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog"))
{
    if (($action == "ADD2BASKET" || $action == "BUY") && IntVal($PRODUCT_ID)>0)
    {
        Add2BasketByProductID(
              $PRODUCT_ID,
              $QUANTITY,
                     array("NAME" => "Размер", "CODE" => "SIZE", "VALUE" => "25") 

            );
     }
}


Все нормально данные передаются, но выбранный размер переписывается для всех товаров.

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

Я понимаю что я делаю что-то не так и меня несет туда, подскажите где моя ошибка, где я перестарался.
спросил 12 Окт, 13 от Auda (120 баллов)

4 Ответы

00 голосов
ну выводите в форму еще поле SIZE, предварительно достав его значение в компоненте
Код
<input type="hidden" name="size" value="<?=$arElements['PROPERTIES']['SIZE']['VALUE']?>"> 

а в корзину свою добавьте
Код
...
array("NAME" => "Размер", "CODE" => "SIZE", "VALUE" => $_REQUEST['SIZE']) 
...


Грубый пример, но направление я вам подсказал.
ответил 30 Окт, 13 от Almarea (3,760 баллов)
00 голосов
На сколько я понял с помощью этого кода
Код
<?=$arElements['PROPERTIES']['SIZE']['VALUE']?> 

идет выборка свойств из инфоблока, то есть на каждый товар уже выбран размер и необходимо его просто передать в корзину!
Но у меня немного другой случай.
В инфо блоке нет заранее выбранного значения свойства размер, то есть у каждой футболки есть варианты выбора размеров S M L XL XXL и пользователь сам выбирает какой ему нужно жмет кнопку купить и этот размер должен записываться в корзину с товаром!
ответил 04 Фев, 14 от Auda (120 баллов)
00 голосов
Цитата
Сергей Филатов пишет:
Все нормально данные передаются, но выбранный размер переписывается для всех товаров.

А где вы указываете, к какому товару, с каким именно ID относится размер? Получается, что все input, содержащие значения размеров, имеют одинаковое название для всех товаров.
Код
<input class='textfield' style='width:30px; text-align:right' name='SIZE' type='text'>.

Соответственно, в форму передается только последнее значение.
А дальше скрипт, который добавляет товар в корзину - тоже не проверяет, к какому товару относится значение поля SIZE, а старательно пишет всем товарам одно и тоже значение.

Возможный выход - переименовать поле с размером в
Код
<input class='textfield' style='width:30px; text-align:right' name='SIZE_<?=$arElement["ID"]?>' type='text'>


А в функции прописать тоже соответственно
Код
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) 
{ 
    if (($action == "ADD2BASKET" || $action == "BUY") && IntVal($PRODUCT_ID)>0) 
    { 
        Add2BasketByProductID( 
              $PRODUCT_ID, 
              $QUANTITY, 
                     array("NAME" => "Размер", "CODE" => "SIZE_'.$PRODUCT_ID.'", "VALUE" => "25") 

            ); 
     } 
}
ответил 24 Май, 14 от ESLIBIA (260 баллов)
00 голосов
Цитата
Сергей Филатов пишет:
На сколько я понял с помощью этого кода Код <?=$arElements['PROPERTIES']['SIZE']['VALUE']?>

Без разницы, передавайте что угодно... нет в ИБ, ставьте своё. Хоть на JS меняйте значение этого поля.
ответил 20 Сен, 14 от Almarea (3,760 баллов)

Похожие вопросы

0 голосов
6 ответов
спросил 09 Сен, 13 от Plasma50 (360 баллов)
0 голосов
0 ответов
спросил 25 Март, 14 от NextGen (620 баллов)
0 голосов
4 ответов
0 голосов
1 ответ
0 голосов
3 ответов
спросил 09 Март, 14 от ROKKI (160 баллов)