Личный кабинет покупателя в интернет-магазине на 1С-Битрикс собирается из одного комплексного компонента bitrix:sale.personal.section. Он объединяет заказы, персональные данные, профили, подписки и внутренний счёт в единый раздел с человекопонятными адресами. Разберём, как он устроен и как его корректно настроить.
Что такое комплексный компонент личного кабинета
Комплексный компонент bitrix:sale.personal.section — это «зонтик», который внутри себя разворачивает набор простых компонентов и раздаёт им адреса через ЧПУ. Вместо того чтобы вручную раскладывать по страницам sale.personal.order.list, sale.personal.profile.list и десяток других, вы ставите один компонент на индексную страницу раздела личного кабинета — а он сам маршрутизирует запросы.
Такой подход в Битриксе называется комплексным компонентом: он работает поверх ЧПУ-движка (SEF), хранит карту URL в своих параметрах и при обращении к вложенному адресу подключает нужный вложенный компонент с нужным шаблоном. В готовых решениях (например, «Аспро», «Эйприл», типовой «Интернет-магазин») личный кабинет почти всегда собран именно так.
sale. Если модуль «Интернет-магазин» не установлен, компонента в списке визуального редактора не будет.Из каких страниц он состоит
Внутри комплексного компонента живёт набор вложенных страниц. Каждая соответствует своему шаблону в каталоге /personal/ и своему простому компоненту. Базовый состав выглядит так:
| Страница (SEF) | Вложенный компонент | Назначение |
|---|---|---|
orders | sale.personal.order.list / .detail | История и детализация заказов |
profile | main.profile | Персональные данные пользователя |
address | sale.personal.profile.list | Профили покупателя и адреса доставки |
subscribe | catalog.product.subscribe.list | Подписки на товары |
basket | sale.basket.basket | Корзина в рамках кабинета |
account | sale.personal.account | Внутренний счёт покупателя |
Набор страниц зависит от версии модуля и редакции. Полный перечень доступных разделов вы увидите прямо в настройках компонента — там же включаются и отключаются отдельные пункты через параметр SEF_URL_TEMPLATES.
ЧПУ и карта адресов (SEF)
Ключ к пониманию компонента — режим ЧПУ (SEF). При включённом параметре SEF_MODE = Y компонент строит адреса от базового префикса. Обычно задают SEF_FOLDER = /personal/, и тогда история заказов открывается по /personal/orders/, детали заказа — по /personal/order/detail/#ID#/, профили — по /personal/address/ и так далее.
Шаблоны конкретных путей хранятся в массиве SEF_URL_TEMPLATES. Именно здесь можно переименовать разделы, если нужны русскоязычные или более короткие URL, но делать это следует аккуратно: внутренние ссылки в шаблонах вложенных компонентов строятся именно по этим ключам.
- Плюс SEF: чистые адреса, удобные для пользователя и поисковика, единая точка входа
/personal/. - Минус при ошибках: если правило ЧПУ в
urlrewrite.phpне совпадает сSEF_FOLDER, вложенные страницы отдают 404.
urlrewrite.php должно быть правило вида ^/personal/, указывающее на страницу с компонентом. Без него работает только индекс раздела.Авторизация и права доступа
Личный кабинет по определению доступен только авторизованному пользователю. Компонент сам не показывает форму входа — он опирается на текущую сессию. Поэтому раздел /personal/ почти всегда закрывают через компонент авторизации bitrix:system.auth.form в шаблоне или через проверку $USER->IsAuthorized() в init.php/прологе раздела.
Данные, которые видит покупатель, привязаны к его USER_ID: заказы фильтруются по владельцу, профили и счёт — тоже. Дополнительно на видимость влияют права модуля «Интернет-магазин» (sale) и группы пользователей. Если менеджер должен видеть чужие заказы, это уже область админки, а не публичного кабинета.
- Гостю раздел должен отдавать форму входа, а не пустые страницы.
- После логина пользователь возвращается на запрошенный URL через
backurl. - Права на
saleзадаются в Настройки → Пользователи → Группы и в правах самого модуля.
Шаблоны и кастомизация
Комплексный компонент имеет свой шаблон, который отвечает за левое меню кабинета и обёртку страниц. Каждая вложенная страница дополнительно использует шаблон своего простого компонента. Это двухуровневая структура, и правки нужно делать на верном уровне.
- Скопируйте шаблон комплексного компонента в
/local/templates/<шаблон>/components/bitrix/sale.personal.section/<свой>/— там правится навигация кабинета. - Для отдельной страницы (например, списка заказов) копируйте шаблон вложенного компонента
sale.personal.order.listв тот же кастомный namespace. - Разметку берите из
template.php, вспомогательную логику — изresult_modifier.phpиcomponent_epilog.php.
/bitrix/components/ — их перезапишет обновление. Все кастомизации размещайте в /local/ или в шаблоне сайта.Типичные ошибки при внедрении
Большинство проблем с личным кабинетом сводятся к нескольким повторяющимся ситуациям. Держите их в голове при отладке:
- 404 на вложенных страницах — рассинхрон между
SEF_FOLDER, физическим путём страницы и правилом вurlrewrite.php. - Пустой список заказов — заказы созданы под другим
USER_IDили фильтруются по неверному типу плательщика; часто всплывает после переноса с обменом из 1С. - Битое меню кабинета — правили шаблон вложенного компонента вместо шаблона комплексного.
- Данные не обновляются после оформления — агрессивное кэширование компонента; проверьте
CACHE_TYPEи сброс кэша по событиям заказа. - Раздел открыт гостю — забыли обернуть
/personal/проверкой авторизации.
Отдельно стоит следить за производительностью: список заказов с большим числом позиций и включённым композитным кэшем ведёт себя иначе, чем страница профиля, поэтому кэш настраивают точечно для каждой вложенной страницы.
Итог
Комплексный компонент sale.personal.section — это каркас всего личного кабинета: один компонент на ЧПУ раздаёт страницы заказов, профилей, подписок и внутреннего счёта. Чтобы он работал предсказуемо, важны три вещи: согласованные SEF_FOLDER и urlrewrite.php, корректная защита раздела авторизацией и кастомизация строго в /local/.
Мы в B2Bsite регулярно собираем и дорабатываем личные кабинеты на 1С-Битрикс: разводим ЧПУ, кастомизируем шаблоны, увязываем заказы с обменом из 1С и настраиваем кэш под нагрузку каталога. Если кабинет отдаёт 404, теряет заказы или тормозит — поможем разобраться и довести до рабочего состояния.
Частые вопросы
Какой компонент отвечает за личный кабинет покупателя в Битрикс?
Комплексный компонент bitrix:sale.personal.section из модуля «Интернет-магазин». Он объединяет заказы, профили, подписки и внутренний счёт в один раздел.
Почему вложенные страницы кабинета отдают 404?
Чаще всего не совпадают параметр SEF_FOLDER компонента, физический путь страницы и правило в urlrewrite.php. Приведите их к единому префиксу, обычно /personal/.
Как изменить адреса разделов личного кабинета?
Через параметр SEF_URL_TEMPLATES в настройках компонента. Переименовывайте ключи осторожно — по ним строятся внутренние ссылки вложенных компонентов.
Нужно ли отдельно закрывать раздел от неавторизованных?
Да. Сам компонент опирается на текущую сессию, поэтому раздел /personal/ оборачивают проверкой авторизации или компонентом system.auth.form с возвратом по backurl.
Где правильно кастомизировать шаблон кабинета?
Копируйте шаблон комплексного компонента и вложенных компонентов в /local/templates/, а не редактируйте файлы в /bitrix/components/, которые перезаписываются обновлениями.
Почему в кабинете не видно заказов покупателя?
Обычно заказы привязаны к другому USER_ID или фильтруются по неверному типу плательщика. Это частая ситуация после переноса сайта или обмена из 1С.
Можно ли отключить лишние страницы кабинета?
Да, состав пунктов регулируется в настройках компонента через список SEF-шаблонов: ненужные разделы просто не включают в карту URL и меню.
Как настроить кэширование личного кабинета?
Кэш задают точечно для вложенных страниц через CACHE_TYPE и сбрасывают по событиям заказа. Список заказов и профиль ведут себя по-разному, поэтому единая настройка обычно не подходит.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.