---
title: Страница корзины
section: cart
theme: mebelidomanet
framework: bootstrap
redesign_status: done
last_updated: 2026-07-13
files:
  php_inline: []
  php_partials:
    - views/cart/index.php
    - views/cart/_product.php
  scss:
    - src/client/cart-page/index.scss
  js: []
  widgets: []
  shared:
    - src/cart/
deps_on:
  - shared/cart-module
  - cart/cart-form
  - cart/cart-empty
themes_with_analog:
  - mebelmall
  - dommebeli
  - mebelmart
  - freshshop
  - mebelmag
  - mebelbazar
  - hormebel
  - cartzilla
  - mebelmarket
  - stolkomebeli
---

# Корзина

## Назначение

Страница `/cart` — список товаров в корзине + регистрационная форма для оформления заказа. Реализация — точка `<div id="cartWidget">` в `index.php`, в которую монтируется shared React-виджет из `src/cart/`. Виджет получает параметры через `data-*` атрибуты (`data-policy`, `data-city`, `data-region`, `data-showcredit`, `data-showpromocode`).

Дополнительно — partial `_product.php` рендерит SSR-карточку товара в корзине (фото + описание + опции + количество + цена). Используется как fallback / для не-JS клиентов.

## Где живёт

- **HTML:** `views/cart/index.php`, `views/cart/_product.php`.
- **SCSS:** `src/client/cart-page/index.scss`.
- **Shared React-виджет:** `src/cart/` — главный код корзины, JSX компоненты, Redux store.

## Bootstrap-классы

- **Сетка:** `container`, `row`, `col-12`, `col-sm-4`, `col-sm-6`, `col-sm-8`.
- **Position/text/spacing:** `position-relative`, `text-center`, `py-2`, `mx-3`, `mt-4`, `mb-3`.
- **Borders:** `border-right`.
- **Image:** `img-fluid`.

## JS-зависимости

- `CartInit()` из `@components/cart` (`src/client/index.js:67`) — монтирование React-виджета.
- Redux store — `src/store/`.

## Редизайн (2026-07-13, стиль mebel-landing)

Виджет `src/cart/` — **shared** (рендерится и в других темах), поэтому его
JSX/разметку НЕ трогали. Редизайн сделан **скином**: `src/client/cart-page/index.scss`
подключён только в mebelidomanet и переопределяет вид, цепляясь за существующие
классы/элементы виджета внутри `.cart_page` (высокая специфичность за счёт
`.cart_page #cartWidget …`). Что переверстали:

- **Контейнер** `.container.cart_page` — уже (`max-width: 860px`), верт. ритм,
  боковые отступы (тема иначе может занулять gutter).
- **Список товаров** — `.list-group` → карточка (`#fff`, radius 20, `$md-line`);
  `.list-group-item` → строки-разделители; название-ссылка, опции/комплектация
  (uppercase-подписи + `$md-ink-soft`), цена, **круглый счётчик** (`.input-group`
  → pill-кнопки ±), «Удалить» → ghost-pill.
- **Итого** — футер-полоса `.list-group > .text-right` на `$md-bg` с `Fraunces`
  (старая цена — зачёркнутый `<s>`).
- **Форма** — блок персональных данных в **2 колонки** (grid, `.lead` спанит);
  плавающие лейблы `.label-animation` перекрашены под токены + фикс `z-index`
  (внешний `-1` прятал лейбл за инпут); focus → акцентная рамка + `box-shadow`.
- **Радио** (оплата/доставка) и **чекбоксы** (кредит/политика) — кастомные на
  `appearance:none` + токены. **Submit** «Отправить» → акцентный pill (как `.md-btn`).
- **Блок «Нужна помощь»** — карточка-заметка.
- Дохлый импорт `__product.scss` (стилил SSR `_product.php`, который нигде не
  рендерится) убран. `pnpm run build` зелёный; проверено в браузере (desktop +
  mobile), включая состояние focus.

Shared `src/cart/` и `src/cart/components/style.scss` не менялись.
