Очистка корзины в 1С-Битрикс одним нажатием

Просмотров: 33141

В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием. Требуется это довольно редко, однако изредка все же необходимо добавить этот функционал. Расскажу как

Удалить все в корзине Битрикс

На одном из созданных сайтов, по производству и оптовой поставке железобетонных изделий, была замечена тенденция: достаточно часто изделия добавляются в заказу для расчета общего веса набранных товаров. После чего пользователь начинает удалять позиции корзины по одной, а "накидать" в заказ может и 30-50 позиций. Для заботы о посетителях решил добавить кнопку очистки корзины одним нажатием.

В файл /ВАШ_ШАБЛОН_КОРЗИНЫ/result_modifier.php добавляем:


<?
if ($_POST["BasketDelete"] and CModule::IncludeModule("sale"))
{ CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
} ?>

В нужное место, там где хотите показать кнопку очистки корзины, в шаблоне корзины, добавляем:


<form action="" method="POST">
  <input type="submit" value="Очистить корзину" name="BasketDelete">
</form>

И оформляем, как того требует дизайн вашего сайта.

Очистка корзины с помощью js

Более удобный и адекватный способ, сделать это с помощью js/jQuery. К тому же: произойдет без перезагрузки страницы и у пользователя останется шанс восстановить нужные ему позиции.

Очистка корзины битрикс одним нажатием

<script>
    $('.clear_cart').click(function () {
        $('.basket-item-actions-remove').click();
    });
</script>
<button class="clear_cart">Очистить</button>

Смысл в том, что при нажатии на кнопку с классом clear_cart мы иммитируем нажатие сразу на все кнопки удаления товара, которые есть в корзине. В типовом шаблоне корзины эта кнопка имеет класс basket-item-actions-remove, само собой если изменили ее - подставляйте свой класс.

Сам скрипт, можно закинуть в /ВАШ_ШАБЛОН_КОРЗИНЫ/script.js что бы не болтался прямо в шаблоне.

Виталий Кузьмин 24.07.2017
Добрый день, Михаил.

Такой вопрос, связанный с удалением из корзины.

Имеется товар  с торговыми предложениями:
<?echo $arOffer["ID"]?> - Отвечает за добавление выбранного торг. предложения в корзину.
А иначе есть код, который отвечает за удаление торг. предложения из корзины?
tos995 21.11.2017
можно узнать полный путь где лежит /php_intarface/init.php , а то я уже в шаблоне папку создал и поискал по всем папкам ( нашел - воткнул код) - не работает. =(
Михаил Базаров 21.11.2017
Цитата
tos995 написал:
init.php
Вот так поразвернутее будет ответ)
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2916
@stanislav_web 15.06.2022
Не забудьте обернуть input в form с методом POST:<form action="" method="POST">
   <input type="submit" value="Очистить корзину" name="BasketDelete">
</form>
Михаил Базаров 15.06.2022
Цитата
@stanislav_web написал:
Не забудьте обернуть input в form с методом POST:<form action="" method="POST">
   <input type="submit" value="Очистить корзину" name="BasketDelete">
</form>

Да, спасибо- добавил в заметку.
Константин 05.07.2022
Большое спасибо за Ваши решения!
Очень помогают!
Гость 30.12.2022
Добрый день. Подскажите пожалуйста, у меня не работает восстановление почему-то и вариант со скриптом вставляю в template, реакции ноль.  
Гость 30.12.2022
Цитата
Гость написал:
Добрый день. Подскажите пожалуйста, у меня не работает восстановление почему-то и вариант со скриптом вставляю в template, реакции ноль.
Хотя параметр SHOW_RESTORE выставлен в "Y"
Гость 29.01.2024
Большое спасибо за примеры! У меня просьба, по первому варианту с удалением корзины полностью. При нажатии на кнопку удаление произходит и вроде браузер перезагрузился, но товары остаются видимыми пока не перезагрузить ещё раз. Можно ли доработать или добавить скрипт для обновления ajax-ом?