Корзинка для каталога товаров (minibasket.js)

Недавно очередной раз встала задача улучшить юзабилити каталога товаров. Полный функционал интернет-магазина заказчику был не нужен, а вот возможность для пользователей складывать товары в корзину оказалась крайне нужной. Еще бы, заказчик продает запчасти для авто и пользователю крайне неудобно по телефону перечислять весь список, пусть даже по артикулам.Решено внедрить промежуточный этап заказа — корзинку. Делать ее будем, естественно, на скриптах, чтобы не привязываться к cms (глядищь где еще пригодится).

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

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

$(function (){ var minibasket = { selector: { item: '.mb-item', articul: '.art', price: '.mb-price .value', name: '.mb-name', count: '.mb-num', toBasketButton: '#tobasket span' }, … Сразу оговорюсь, что все селекторы (кроме item) должны быть вложены в блок с этим самым селектором item, ведь на странице может быть несколько товаров (например, мы имеем дело с прайсом).Также можно переопределить сообщения:

… msg: { success: «Ваш заказ принят.
Мы свяжемся с вами в ближайшее время!», invalidTel: 'Некорректный номер телефона', re: 'Отправить повторно?', wrongOrder: 'Вы не выбрали ни одного товара или не ввели номер телефона.', empty: 'Пока пусто :(' }, … Для большей кастомизации можно дописать свой собственный скрипт, который будет инициировать добавление в корзинку (метод add ()): add: function (articul, price, name, num){ … Если такой товар уже в корзинке, то увеличивается количество и цена. Дубль с таким же названием не создается.

Соответственно метод remove () удаляет товар из корзинки. В качестве параметра принимается DOM элемент товара в корзинке:

remove: function (obj){ obj.fadeOut ('slow', function (){ obj.remove (); minibasket.calc (); if (! minibasket.items.html ()) minibasket.items.html (minibasket.msg.empty); localStorage['accept'] = ''; minibasket.save (); }); },

Очищаем корзинку с помощью метода clear ():

clear: function (){ this.items.html (this.msg.empty); this.calc (); this.save (); }, Ну и на всякий случай есть метод save (), которым вы можете воспользоваться, если вам надо сохранить изменения, которые вы внесли в содержимое корзинки сторонними скриптами: var save = { tel: minibasket.tel.val (), items: minibasket.items.html () } localStorage['minibasket'] = JSON.stringify (save);

Метод init () по умолчанию вызывается сам.

© Habrahabr.ru