|
Для этого, в первую очередь, нужно в параметрах компонента каталога разрешить указывать количество товара: http://screencast.com/t/mmmpfp5OCvU
Затем это количество необходимо передавать при добавлении в корзину в GET параметре.
Пример ссылки: http://site.ru/catalog/element/71/?action=ADD2BASKET&id=71&quantity=3
Поясним как это сделать.
Для того что бы добавить кнопку купить, для покупки одной единицы товара, мы например, в код компонента bitrix:catalog.element, добавляли следующий код:
<noindex>
< a href="<?echo $arResult["BUY_URL"]?>" rel="nofollow"><?echo GetMessage("CATALOG_BUY")?></a >
< a href="<?echo $arResult["ADD_URL"]?>" rel="nofollow"><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></a >
</noindex>
Константы в языковом файле:
$MESS["CATALOG_ADD_TO_BASKET"] = "В корзину";
$MESS["CATALOG_BUY"] = "Купить";
В $arResult["BUY_URL"] содержится http://сайт/раздел каталога/файл.php?action=BUY&id=ИД_элемента
В $arResult["ADD_URL"] содержится http://сайт/раздел каталога/файл.php?action=ADD2BASKET&id=ИД_элемента
Как мы видим данные ссылки немногим отличаются от ссылки для кнопки с передаваемым количеством товара.
Усовершенствуем передачу товаров в корзину, что бы пользователи могли добавлять необходимое им количество товаров.
Для этого вместо тега <a>, для создания ссылки, мы будем использовать тег <form>, для установки формы на странице:
- В форме мы передаем все необходимые параметры, в том числе id товара (name="id") и его количество (name="quantity").
- Поля с именами action и id пользователь изменить не может. Для quantity (количество) пользователь может поставить необходимое ему число.
<form action="<?echo $arResult["BUY_URL"]?>" method="get">
<input type="text" value="BUY" name="action" hidden />
<input type="text" value="<?=$arResult["ID"]?>" name="id" hidden />
<input type="text" value="1" name="quantity" />
<button type="submit"><?echo GetMessage("CATALOG_BUY")?></button>
</form>
<form action="<?echo $arResult["ADD_URL"]?>" method="get">
<input type="text" value="ADD2BASKET" name="action" hidden />
<input type="text" value="<?=$arResult["ID"]?>" name="id" hidden />
<input type="text" value="1" name="quantity" />
<button type="submit"><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></button>
</form>
Константы в языковом файле:
$MESS["CATALOG_ADD_TO_BASKET"] = "В корзину";
$MESS["CATALOG_BUY"] = "Купить";
Код для компонента bitrix:catalog.section будет выглядеть так (соответствие может быть не полным - переменные содержащие параметры могут отличаться, все зависит от кастомизируемого шаблона):
<form action="<?echo $arResult["BUY_URL"]?>" method="get">
<input type="text" value="BUY" name="action" hidden />
<input type="text" value="<?=$arItem["ID"]?>" name="id" hidden />
<input type="text" value="1" name="quantity" />
<button type="submit"><?echo GetMessage("CATALOG_BUY")?></button>
</form>
<form action="<?echo $arResult["ADD_URL"]?>" method="get">
<input type="text" value="ADD2BASKET" name="action" hidden />
<input type="text" value="<?=$arItem["ID"]?>" name="id" hidden />
<input type="text" value="1" name="quantity" />
<button type="submit"><?echo GetMessage("CATALOG_ADD_TO_BASKET")?></button>
</form>
Константы в языковом файле:
$MESS["CATALOG_ADD_TO_BASKET"] = "В корзину";
$MESS["CATALOG_BUY"] = "Купить";
Для передачи в корзину товара с выбором характеристик необходимо добавить в ссылке параметры вида:
prop[#КОД свойства#]
http://site.ru/catalog/element/71/?action=ADD2BASKET&id=71&quantity=3&prop[COLOR_REF]=purple&prop[SIZE]=50
На примере формы:
<form action="<?echo $arResult["BUY_URL"]?>" method="get">
<input type="text" value="BUY" name="action" hidden />
<input type="text" value="<?=$arItem["ID"]?>" name="id" hidden />
<input type="text" value="1" name="quantity" />
<input type="text" value="purple" name="prop[COLOR_REF]" />
<input type="text" value="50" name="prop[SIZE]" />
<button type="submit"><?echo GetMessage("CATALOG_BUY")?></button>
</form>
|