Настройка списка избранного 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка списка избранного 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка списка избранного 1С-Битрикс

Список избранного (избранные товары, закладки) — нет встроенного стандартного компонента в ядре Битрикс, который реализовал бы полноценный wishlist с хранением в базе данных. Функционал реализуется через механизм «Отложенных товаров» модуля sale либо через кастомную разработку с использованием UserFieldManager или отдельной таблицы.

Вариант 1: Отложенные товары (встроенный механизм)

Модуль sale имеет встроенный механизм «отложенных» позиций корзины. Товар добавляется в корзину с флагом DELAY = Y. Технически это строка в b_sale_basket с признаком отложенного:

// Добавить товар в отложенные
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(
    \Bitrix\Sale\Fuser::getId()
);
$item = $basket->createItem('catalog', $productId);
$item->setFields([
    'QUANTITY' => 1,
    'DELAY'    => 'Y',
    'NAME'     => $productName,
    'PRICE'    => $price,
    'CURRENCY' => 'RUB',
]);
$basket->save();

Компонент bitrix:sale.basket.basket выводит отложенные товары при параметре SHOW_DELAY = Y.

Минус: отложенные товары — часть корзины, а не отдельный список. При очистке корзины теряются.

Вариант 2: Кастомный список избранного

Для полноценного функционала: хранение между сессиями, синхронизация между устройствами, список независим от корзины — нужна отдельная таблица или использование пользовательских полей.

Структура таблицы user_favorite_products:

CREATE TABLE user_favorite_products (
    ID SERIAL PRIMARY KEY,
    USER_ID INT NOT NULL,
    PRODUCT_ID INT NOT NULL,
    DATE_ADD TIMESTAMP DEFAULT NOW(),
    UNIQUE(USER_ID, PRODUCT_ID)
);

ORM-класс через DataManager позволяет работать с таблицей через стандартный Битрикс API. AJAX-эндпоинт для добавления/удаления — через \Bitrix\Main\Engine\Controller.

Для гостей: хранение в localStorage

Для незарегистрированных пользователей список избранного удобнее хранить в localStorage браузера. При авторизации — синхронизировать с базой через AJAX. Это стандартный подход для современных магазинов.

Компонент и UI

Кнопка «В избранное» размещается в шаблоне карточки товара и листинга. Состояние кнопки (добавлен/не добавлен) управляется JavaScript-классом на основе данных, переданных в компонент или полученных через AJAX.

Сроки выполнения

Избранное через механизм отложенных товаров — 2–4 часа. Полноценный кастомный список с синхронизацией гость/авторизованный — 1–2 рабочих дня.