В стандартных компонентах Битрикс кнопка "Очистить корзину" встречается редко, но есть в некоторых шаблонах.
1. Компонент sale.basket.basket (Аспро и некоторые другие шаблоны)В некоторых готовых шаблонах (например, Аспро) кнопка уже встроена. Проверьте:
-
Файлы шаблона
/bitrix/templates/[ваш_шаблон]/components/bitrix/sale.basket.basket/ -
Если её нет, можно добавить вручную (как в предыдущей инструкции).
В этом компоненте иногда есть кнопка очистки, но зависит от шаблона.
-
Проверьте настройки компонента в Админке (
Настройки → Оформление заказа). -
В стандартном шаблоне её обычно нет, но можно добавить аналогичным способом.
Некоторые модули из Маркетплейса (например, «Улучшенная корзина») добавляют эту функциональность.
Рассмотрим реализацию на примере компонента sale.basket.basket в файле template.php.
Код для добавления кнопки
<form action="" method="POST">
<button type="submit" class="clear-cart" name="BasketClear">Очистить корзину</button>
</form>
<?
if (isset($_POST["BasketClear"]) && CModule::IncludeModule("sale")) {
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
header("Location: ".$_SERVER['REQUEST_URI']);
}
?>Важные замечания
-
Избегайте вложенных форм – кнопка должна быть вне основной формы корзины, иначе могут возникнуть конфликты.
-
Сброс POST-запроса – после очистки корзины используйте
header("Location: ".$_SERVER['REQUEST_URI']), чтобы избежать повторной отправки формы.
Пример корректного размещения кода
<!-- Основная форма корзины -->
<form method="post" action="<?=POST_FORM_ACTION_URI?>" name="basket_form" id="basket_form">
<div id="basket_form_container">
<div class="bx_ordercart">
<? include($_SERVER["DOCUMENT_ROOT"].$templateFolder."/basket_items.php"); ?>
</div>
</div>
<input type="hidden" name="BasketOrder" value="BasketOrder" />
</form>
<!-- Форма кнопки "Очистить корзину" -->
<form action="" method="POST">
<button type="submit" class="clear-cart" name="BasketClear">Очистить корзину</button>
</form>
<?
if (isset($_POST["BasketClear"]) && CModule::IncludeModule("sale")) {
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
header("Location: ".$_SERVER['REQUEST_URI']);
}
?>Возможные ошибки и проверка
-
Не работает кнопка "Оформить заказ" – убедитесь, что форма очистки корзины не вложена в основную форму.
-
Двойная отправка POST – всегда делайте редирект после очистки.
Теперь ваша корзина в Битрикс будет удобнее для пользователей!