Битрикс – как добавить товар в корзину

В интерет магазинах есть свои компоненты, которые прекрасно себя зарекомендовали, такие как bitrix:catalog, bitrix:catalog.top, bitrix:eshopapp.top и другие. Их и рекомендуется кастомизировать, но как добавить товар используя API Битрикса?

Битрикс – добавить товар к заказу и перейти на страницу оформления

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

Итак наша задача: в небольшой форме вы просите выбрать количество товаров, которые добавятся к текущей корзине пользователя, и кнопка “Купить” или “Добавить в корзину”.

Наш HTML:

<form action="" method="POST">
	<input type="text" value="1" class="order-input order-input-small" name="order-count">
	<input type="submit" value="Заказать" class="order-btn-small">
</form>

Небольшая форма, без обработчика, которая сформирует массив $_POST, после отправки. Обязательно указываем name, в моем случае это order-count.
И наш код:

<?
$PRODUCT_ID = 19103;
if (CModule::IncludeModule("catalog")) {
	if ($_POST['order-count']) {
		Add2BasketByProductID(
			$PRODUCT_ID,
			$_POST['order-count'],
			false
		);

		LocalRedirect("/personal/order/make/");
	}
}
?>

Итак, если в массиве $_POST есть order-count, то мы добавляем товар в корзину по ID (переменная $PRODUCT_ID), и переходим сразу на страницу оформления, не заходя в корзину.

ID товара можно также передать в форме, тогда наш код будет выглядеть так:

<form action="" method="POST">
	<input type="text" value="1" class="order-input order-input-small" name="order-count">
	<input type="hidden" value="19103" name="order-id">
	<input type="submit" value="Заказать" class="order-btn-small">
</form>

<?
$PRODUCT_ID = $_POST['order-id'];
$PRODUCT_COUNT = $_POST['order-count'];

if (CModule::IncludeModule("catalog")) {
	if ($PRODUCT_ID && $PRODUCT_COUNT) {
		Add2BasketByProductID(
			$PRODUCT_ID,
			$PRODUCT_COUNT,
			false
		);

		LocalRedirect("/personal/order/make/");
	}
}
?>

Это лишь один из вариантов и он просто быстрее, чем переделывать шаблон компонента catalog.top или любой другой из этого семейства. Я бы рекомендовал его использовать на продающих страницах (лендинг пейдж), т.к. не вижу смысла писать новый компонент ради 1 товара.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *