Количество товара отправляемого в корзину Битрикс

Рассмотрим как можно реализовать отправку в корзину, интернет-магазина на битрикс, произвольное количество товара из детального описания элемента каталога. Само собой, можно просто оформить стандартный шаблон идущий в комплекте с битрикс, в котором данная возможность уже имеется. Однако, на сколько я помню, там нет возможности регулировать количество отправляемого товара с помощью кнопок "+" и "-". Давайте сделаем.

Добавляем поля для ввода количества.

Согласно документации битрикс, PRODUCT_QUANTITY_VARIABLE- Задает имя переменной, в которой будет передаваться количество товара. Соответственно, нам нужно создать input для ввода количества и при помощи события onclick создать две ссылки которые будут прибавлять и отнимать одну единицу в input. Все просто: получаем текущее значение PRODUCT_QUANTITY_VARIABLE и либо выполняем "++", либо "--":

Также добавим input типа submit который будет отправлять указанное количество в корзину ADD2BASKET. Данный кусок кода вставляем в то место детального просмотра элемента каталога, где планируется выводить все эти поля.

<input type="text" name="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>" value="1" id="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>">

<a href="javascript:void(0)" onclick="BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value++;">+</a>

<a href="javascript:void(0)" onclick="if (BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value &gt; 1) BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value--;">-</a>

<input type="submit" name="<?echo $arParams["ACTION_VARIABLE"]."ADD2BASKET"?>" value="шт. В корзину" class="add_b_item">

Вот и все: Код привел безо всякого оформления. С помощью css, Вы всегда можете оформить данные поля под требования своего дизайна. Вот как я оформил на одном из своих проектов:

Количество товаров в корзину в карточке товара

Автору на кофе и печеньки!
  • Через Яндекс деньги
  • С банковской карты
  • С мобильного
  • Через DonationAlerts
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей

Зарегистрироваться Войти
Напомнить пароль

Быстрая регистрация через соц.сеть:
Татьяна
Добрый день
Подскажите, Как мне вывести в корзине СУММУ СКИДКИ НА ТОВАР
Не могу понять если такой переменной нет, где лучше написать расчет СКИДКИ
Мой email: letaa@yandex.ru
Спасибо
Аня Иванович
Добрый день!
Возник вопрос о количестве товара, каким образом можно ограничить количество товара доступное в одни руки?  
Михаил Базаров
Цитата
Аня Иванович пишет:
Добрый день!
Возник вопрос о количестве товара, каким образом можно ограничить количество товара доступное в одни руки?
Если по быстрому, то можно превратить поле ввода количества из type="text" в type="number" и задать максимальную цифру

<input type="number" max="5"/> - больше пяти не получится

Если у товаров разные ограничения, то можно создать свойство ATT_MAX_IN_HAND
Код
<input type="number" max="<? echo $arResult['DISPLAY_PROPERTIES']['ATT_MAX_IN_HAND']['~VALUE'];?>"/>  
vovkka
Добрый день Михаил! Делаю магазин по вашим урокам "Создание простого магазина". Уроки очень крутые!
Возник вопрос, сделал по вашему уроку изменение количества товара ajax, но изменяется только кратно 1. Как сделать к примеру изменение по 0.1 кг ? Я задал в товаре кратность 0.1. Далее вбиваю 0.1 в карточку товара, но все равно улетает в корзину 1. Смотрел новый шаблон bitrix, уж очень сложно.... там в value стоит специальная переменная, которая не понять от куда прилетает. Не могли бы вы направить на правильный путь ? Я использую ваши старые шаблоны catalog. Большое спасибо!
vovkka
ответ на вопрос выше, может кому пригодиться:   :D  

идете в файл add2basket и там
$QUANTITY = intval($_POST['QUANTITY'] ;) ; --- тут идет округление к типу int.
Я сделал по своему :

$QUANTITY = $_POST['QUANTITY'];
     if (is_numeric($QUANTITY)) {
      Add2BasketByProductID( $PRODUCT_ID, $QUANTITY );
     } else {
      echo "Задано не правильное количество товара";
     }

Собственно записываем значение в переменную и проверяем является ли она числом. Если да то вызываем функцию и передаем туда параметры. Если нет, на нет и суда нет.  :D
Михаил Базаров
Цитата
vovkka написал:
Собственно записываем значение в переменную и проверяем является ли она числом. Если да то вызываем функцию и передаем туда параметры. Если нет, на нет и суда нет.  
В каждом товаре можно задать "коэффициент единицы измерения" этот коэффициент можно вызывать в input
через $arElement['CATALOG_MEASURE'] и превратив input в type="number" и добавив  
step="<?= $arElement['CATALOG_MEASURE']?>"

Пример:

Код
<a href="javascript:void(0)" onclick="BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value++;">+</a> 

<input type="number" step="<?= $arElement['CATALOG_MEASURE']?>"  name="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>" value="1" id="<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>">

<a href="javascript:void(0)" onclick="if (BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value > 1) BX('<?echo $arParams["PRODUCT_QUANTITY_VARIABLE"]?>').value--;">-</a> 



Ну а дальше можно и скриптец навесить, на этот input - если нужно проверять кратность и доступность товара

Решение битрикс маркетплейс- бесплатно

© 2011—2017 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.

Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой.
Политика конфеденциальности