1. Подключение компонента в шаблон сайта
Откройте файл шаблона вашего сайта, обычно это/bitrix/templates/ВАШ_ШАБЛОН/header.php (или /local/templates/ВАШ_ШАБЛОН/header.php). В нужное место вставьте вызов:
<?php
$APPLICATION->IncludeComponent(
"bitrix:sale.basket.line",
"",
Array(
"HIDE_ON_BASKET_PAGES" => "N",
"PATH_TO_BASKET" => "/personal/cart/",
"PATH_TO_PERSONAL" => "/personal/",
"PATH_TO_ORDER" => "/personal/order/make/",
"PATH_TO_PROFILE" => "/personal/",
"PATH_TO_REGISTER" => "/login/",
"POSITION_FIXED" => "Y",
"POSITION_HORIZONTAL" => "right",
"POSITION_VERTICAL" => "top",
"SHOW_AUTHOR" => "N",
"SHOW_DELAY" => "N",
"SHOW_EMPTY_PRODUCTS" => "Y",
"SHOW_IMAGE" => "Y",
"SHOW_NOTAVAIL" => "N",
"SHOW_NUM_PRODUCTS" => "Y",
"SHOW_PERSONAL_LINK" => "N",
"SHOW_PRICE" => "Y",
"SHOW_PRODUCTS" => "Y",
"SHOW_REGISTRATION" => "N",
"SHOW_SUBSCRIBE" => "N",
"SHOW_SUMMARY" => "Y",
"SHOW_TOTAL_PRICE" => "Y",
)
);
?>
2. Ключевые параметры для висячей корзины
- POSITION_FIXED = Y — фиксированное положение (корзина «прилипает» к окну браузера).
- POSITION_HORIZONTAL — left / right / center (горизонтальное позиционирование).
- POSITION_VERTICAL — top / bottom / center (вертикальное позиционирование).
- HIDE_ON_BASKET_PAGES = N — не скрывать корзину на странице самой корзины.
- SHOW_PRODUCTS = Y — показывать список товаров при наведении.
- SHOW_TOTAL_PRICE = Y — выводить итоговую сумму.
- SHOW_NUM_PRODUCTS = Y — выводить количество товаров.
- PATH_TO_BASKET — путь к корзине (например, /personal/cart/).
- PATH_TO_ORDER — путь к оформлению заказа.
3. CSS-стилизация для плавающей корзины
Компонент sale.basket.line приPOSITION_FIXED = Y уже добавляет CSS-классы для фиксированного позиционирования. Вы можете переопределить их в вашем styles.css шаблона:
.bx-basket-fixed {
position: fixed;
z-index: 1000;
/* если не устраивает стандартное позиционирование — переопределите */
}
.bx-basket-fixed.top.right {
top: 20px;
right: 20px;
}
.bx-basket-fixed.top.left {
top: 20px;
left: 20px;
}
.bx-basket-fixed.bottom.right {
bottom: 20px;
right: 20px;
}
.bx-basket-fixed.bottom.left {
bottom: 20px;
left: 20px;
}
4. Вариант: корзина в шапке (статическая, на всех страницах)
Если вам не нужно фиксированное положение, а просто нужно показывать корзину на всех страницах в шапке, уберите параметрPOSITION_FIXED (или установите N). Компонент встраивается в структуру шапки штатно.
<?php
$APPLICATION->IncludeComponent(
"bitrix:sale.basket.line",
"",
Array(
"PATH_TO_BASKET" => "/personal/cart/",
"PATH_TO_ORDER" => "/personal/order/make/",
"SHOW_NUM_PRODUCTS" => "Y",
"SHOW_TOTAL_PRICE" => "Y",
"SHOW_PRODUCTS" => "Y",
)
);
?>
5. Кастомизация шаблона компонента
Чтобы изменить внешний вид корзины, скопируйте шаблон компонента из/bitrix/components/bitrix/sale.basket.line/templates/ в /bitrix/templates/ВАШ_ШАБЛОН/components/bitrix/sale.basket.line/ и отредактируйте:
- template.php — HTML-разметка корзины.
- style.css — стили.
- script.js — скрипты (обновление через AJAX).
6. Альтернатива: кастомная реализация через API корзины
Если компонент не подходит, можно получить данные корзины напрямую через ORM модуля sale:<?php
use Bitrix\Sale\Basket;
use Bitrix\Main\Loader;
Loader::includeModule('sale');
$basket = Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(), SITE_ID);
$count = $basket->count();
$price = $basket->getPrice();
?>
<div class="my-custom-cart">
Корзина: <?= $count ?> товаров на <?= CurrencyFormat($price, 'RUB') ?>
</div>
Итог
Самый простой и правильный путь — использовать стандартный компонент bitrix:sale.basket.line с параметром POSITION_FIXED = Y, разместив его вызов в файле header.php вашего шаблона сайта. Это обеспечит отображение корзины на всех страницах.