Дополнительный функционал добавления товара в корзину
Часто приходится сталкиваться с ситуацией, когда необходимо самостоятельно написать функционал добавления/удаления в корзину товара. В этой короткой статье и кейсе мы рассмотрим вариант, как это можно сделать.
Добавление товара в корзину. Как это работает
1. В данном случае мы предлагаем использовать jQuery, чтобы сам AJAX запрос был нагляднее. Чтобы подключить библиотеку jQuery, просто добавьте строчку, которая указана ниже, туда, где вы подключаете свои JS скрипты.
Asset::getInstance()->addJs("https://code.jquery.com/jquery-3.5.1.min.js");
2. Теперь напишем PHP код, который будет получать данные о товаре и добавлять его в текущую корзину на сайте
<? require_once ($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include.php");?>
<?
if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog"))
{
if (isset($_POST['PRODUCT_ID'])&&isset($_POST['QUANTITY'])) {
$PRODUCT_ID = intval($_POST['PRODUCT_ID']);
$QUANTITY = intval($_POST['QUANTITY']);
Add2BasketByProductID(
$PRODUCT_ID,
$QUANTITY,
false
);
}
else {
echo "Нет параметров ";
}
}
else {
echo "Не подключены модули";
}
?>
При этом, мы получаем ID товара и его количество, а затем передаем во встроенную функцию Битрикса «Add2BasketByProductID».
Описание метода можно найти в самой официальной документации и мануалах к разработке CMS Битрикс на официальном сайте.
3. Добавим код AJAX, который будет отправлять $_POST по адресу со скриптом, который описан пунктом ранее.
function add2basket(ID) {
$.ajax({
type: "POST",
url: "/local/php_interface/divier/add2basket__ajax.php",
data: {
PRODUCT_ID: ID,
QUANTITY: getProdIDQuantity(ID),
},
success: function (msg) {
// alert(msg);
},
});
}
Обратите внимание, если необходимо обновлять данные в корзине (в шапке сайта), то просто опишите эту логику в поле «success» на JavaScript.
4. Затем, на кнопку добавления в корзину необходимо «повесить» событие onclick, которое будет исполнять код AJAX. В нашем конкретном случае это выглядит вот так:
<button onclick="add2basket(ID)">В корзину<button>
5. Откуда взять ID? Ниже пример кода, где мы получаем ID товара

Удаление из корзины работает практически также.
Естественно, AJAX и PHP код будут отличаться.
PHP – код удаления из корзины
<? require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include.php"); ?>
<?
if (!CModule::IncludeModule("sale")) return;
if (isset($_POST['PRODUCT_ID'])) {
$PRODUCT_ID = intval($_POST['PRODUCT_ID']);
CSaleBasket::Delete($PRODUCT_ID);
// echo "Продукт удален";
}
?>
AJAX удаления из корзины
function removeFromBasket(ID) {
$.ajax({
type: "POST",
url: "/cart/ajax_delete.php",
data: {
PRODUCT_ID: ID
},
success: function (msg) {
// alert(msg);
},
complete: function () {
window.location.reload()
}
});
}
Как видите, реализовать функционал добавления и удаления товаров из корзины совсем несложно.
Надеемся, эта статья помогла вам.