Товар с персональными характеристиками

При создании интернет-магазина мы часто оперируем одними и теми же инструментами – SKU, наборы, коллекции. Но бывает приходят клиенты с интересными требованиями к механизму продаж, один из таких механизмов - калькуляция товара по нескольким характеристикам и последующее добавление такого товара в корзину.

Опытные разработчики Битрикс сразу спросят: «А нафига? Чем тебе SKU не подходит?» А ответ тут простой, на каждый миллиметр габаритов не сделаешь SKU (при большом желании конечно можно), а их как минимум 3, а еще у нас 200+ цветов в палитре. Ах да, мы забыли о радиальных объектах, где размеры и стоимость высчитываются на основе диаметра. Вот тут нам на помощь и приходит ручная калькуляция товара.

Пример калькулятора товара

Приступаем

Готовим задание на работы:

  1. Список свойств, которые будут участвовать в калькуляции
  2. Логика калькуляции – формулы, логика наценок и скидок, дополнительные расчеты:
  3. Внешний вид формы калькулятора
  4. Что отправляем в корзину и результат добавления в корзину

Пишем калькулятор

На основе задания и формул пишем калькулятор. Логику мы выносим на сторону клиента, чтобы не генерировать лишних запросов к базе. Существует чеклист для проверки такого калькулятора, которому мы следуем:

  1. У числовых полей установлены атрибуты min и max, в противном случае есть риск коллизий при расчетах. В случае если введенное значение выходит за обозначенные пределы, то сбрасываем на крайнее значение.
  2. Обязательные к заполнению поля содержат атрибут required и дополнительно контролируются скриптами и валидацией.
  3. Наличие значений по умолчанию.
  4. Если свойство содержит более 10 вариантов выбора, то рекомендуется использовать модальные окна для показа полного перечня вариантов (пример, 100500 цветов).
  5. Пример выбора цвета из большого списка
  6. Кнопка добавления в корзину добавляет созданный товар в корзину и выводит на экран извещение об успешности операции.

Калькулятор пишем на основе существующего элемента инфоблока, который нам подарит название, картинку товара и идентификатор для добавления в корзину.

Добавляем товар в корзину

У Битрикса существует функция "CSaleBasket::Add()" добавления товара, вот с помощью нее и будем добавлять наш несуществующий товар в корзинку.

В параметры подставляем полученные из скрипта значения. И вуаля, товар в корзине:

Товар с персональными характеристиками в корзине

Когда нужны такие хитрости

Для примера такие работы мы делали для производителя вентиляционного оборудования, фабрики мебели и фабрики по изготовлению дверей. Теоретически, если вывести правильные формулы, этот подход к примеру, подойдет для сайтов ателье по пошиву одежды или обуви, где стоимость будет высчитываться исходя из физических данных человека (обхват груди, руки и пятки) и используемых материалов. Как результат, применяем данный подход там, где нужно каждый раз создавать сложный товар, а генерировать SKU невозможно или занимает слишком много ресурсов.

Дата: 04.10.2016

Поделитесь статьей со своими друзьями в социальных сетях.


Назад к списку статей