Выбор цвета/размера или других характеристик в одной карточке товара

Зачастую в одной карточке товара необходимо предоставить клиенту выбор размера или цвета, что влечет за собой изменение стоимости товара, а потому приходилось создавать для каждой вариации товара отдельную карточку.

Так было до сегодняшнего дня!

Представляем вам скрипт нашего специалиста Романа Калугина, с помощью которого вы сможете дополнить карточку товара нужной характеристикой с изменением цены и оформить товар через корзину или форму заявки.

Мы подготовили для вас два разных примера:

Пример 1

Карточка товара с джинсами, где доступен выбор цвета и цена меняется в зависимости от предпочтений клиента:

В корзине:

Пример 2

Карточка товара с турами, где сразу представлены пакеты с разной стоимостью:

В корзине:



Как реализовать

1. Расположение и оформление кнопок

В карточку товара добавим кнопки выбора цвета/размера товара. Важно разместить эти кнопки в обычном блоке или колонках внутри карточки товара.

В блоке или колонках, в которых мы разместили наши кнопки, в параметрах мы прописываем класс "color".

В примере с джинсами в колонках:

В примере с турами в блоке:

В примере с джинсами настраиваем выбор цвета с помощью кнопок вот так:

Для этого в настройках каждой кнопки на вкладке "Вид" мы задали точные оттенки цвета по RGB, продублировав их для всех трёх состояний кнопки:

Также мы отключили обводку, углы, тень, а текст в данном примере настроили так, чтобы его не было видно:

В примере с турами, где мы предоставляем выбор разных пакетов в одной карточке товара, мы тоже использовали кнопки, которые на этот раз установили в блоке:

Здесь не потребовалось вносить масштабных изменений во внешний вид кнопок, мы использовали классический вариант оформления.

2. Настройка действия кнопок:

В гаечном ключе на вкладке "Действие" для каждой кнопки указываем "Ничего не делать":

Аналогично и в примере с турами:

В разделе "Содержимое" для каждой кнопки выбора цвета/размера/цены мы пропишем специальный код, в котором изменяем только название и стоимость товара на наши:

<div class="name" hidden>  
Название товара полностью
</div>
<div class="cost" hidden>
999 руб.  
</div>

В данном примере с джинсами на кнопке не будет видно название товара:

Но если вы хотите прописать название и стоимость для клиентов, как в примере с турами, сделайте это последней строкой после кода:

<div class="name" hidden>  
Название товара полностью
</div>
<div class="cost" hidden>
999 руб.  
</div>
Название товара полностью, цена руб

Настройки содержимого кнопок для варианта с турами с указанием названия и стоимости:

3. Подмена стоимости в зависимости от выбора

В примере с джинсами мы не показываем на кнопках цвета стоимость, но ведь клиент должен её видеть! Поэтому мы установили в карточку товара один виджет "Текст" с ролью "Цена товара" и прописали по умолчанию "Цвет не выбран".

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

4. Установка скрипта

В настройках нашей страницы в разделе "Метрика и скрипты" в поле Body произвольного кода установим данный скрипт и сохраним изменения:

<style>
.hoverbtn {
  border-color: red!important;
  border-width: 2px!important;
}
</style>
<script src="https://cdn.jsdelivr.net/gh/romaniter/plp-cart-color@1.4/script.js"></script>

5. Хитрости

Если вы хотите скрыть на опубликованной фото товара, но показывать их в корзине, как это сделали мы в карточке товара с турами, тогда вам нужно внести фото в редакторе и проставить им класс "hidden":

Таким образом, на опубликованной фото товара исчезнут, но появятся в корзине:

Если вы хотите разместить на карточках товара стикеры со своими фото, наподобие наших масок, вы можете сделать это с использованием своих картинок с помощью данной статьи.

Вы также можете использовать данное решение без корзины с простой формой заявки. Просто разместите в карточке товара кнопку с действием "Показать окно с формой" и получайте заявки в личном кабинете и в уведомлениях:

У вас остались вопросы? Пишите нам и мы с радостью поможем:)