Особо не знаю что написать, я не могу воспринять это как плагин или что-то такое, по мне это решение для частного случая.
Я совсем не понимаю какую ценность представляет из себя статья, можете пояснить, что вы хотели донести до читателей?
Вроде все стандартно, ничего нового и интересного тут не описывается, на реально проекте не применимо ибо надо допиливать в любом случае. Я просто теряюсь в догадках.
Я бы это даже назвал узким решением. Как минимум не вижу смысла хранить это всё в js-переменных. А если в пользователь закажет много разнообразного товара, то что будет?
Ну если много разнообразного товара, то это ведь решается за счет постраничной навигации на сервере. По поводу «хранится в js-переменных», js-переменная — это ведь объект из объектной модели документа, то да, согласен, хранится.
В области видимости переменных плагина данных о заказе не хранится лишь при определенных событиях данные берутся из объектной модели и передаются на сервер либо принимаются.
Но как не крути, это узкое решение, которое подходит далеко не всем. Я привык хранить данные о заказе в БД и пользоваться ajax при написании таких проектов.
Собственно, о чем и речь, данные как раз и хранятся на сервере, при помощи плагина они лишь модифицируются.
Решение, соглашусь, подойдет не всем.
ajax он самый кстати.
Да вы не поняли, я вообщене вижу особо смыла в этом плагине, во первых логично что плагин будет писаться под конкрнетный движок, а не движок под плагин подстраиваться.
Во вторых почему вы его называете jquery плагином?
В третьих чтобы его встроить в свой дизайн надо еще дописать тонну кода который будет обрабатывать вашу верстку в корзине и на сайте.
Я просто не могу вообще назвать плагином вещь которая индивидуальна почти для кадого дизайна и движка.
Хороший туториал для тех, кто пишет своё решение! Вот в этом и ценность, мало кто пишет о том как он пишет, а это очень полезно для развития и совершенствования.
Внесу немного критики. По порядку увиденного:
1. «Атрибут» пишется с одной «т»
2. live устарел api.jquery.com/live/
3. Не увидел валидации на стороне клиента
4. Не увидел обработки ошибок
5. Почему бы не сделать корзину не только при помощи запросов к серверу, но и, например, с помощью куки или storage?
Ваша критика очень полезна.
По поводу 5 пункта видимо придется сделать какой-то dataProvider (если конечно можно так назвать).
Остальное допишу, поправлю.
Спасибо.
А я вот прямо сейчас возьму вашу разработку в делающийся проект на OpenCart`е. Изкоробочная корзина и оформление заказа меня не очень устраивает по ряду причин) Так что считайте что у вас уже есть один благодарный пользователь ;)
Если компания делает по 20 шаблонных сайтов в месяц — у неё наверняка есть своё подобное решение.
Если каждый сайт, который вы делаете более-менее уникален и разработка достаточно длительная — то поддерживать «универсализированно-гибконастраиваемое» решение подчас заметно сложнее, чем скопипастить заготовку и отредактировать её под потребности проекта. И код в каждом отдельном проекте получится проще и поддерживать его будет легче (в частности, url-адреса будут прямо в месте их единственного использования, в контексте, а не в «настраиваемых» переменных).
Эх, я то надеялся что будет драг-н-дроп или красивая анимация «перелетания» товара в корзину при нажатии «купить». А отправить ajax-запрос и показать скрытый div с счетчиком товаров можно гораздо меньшим числом строк кода.
Про live события уже написали, не написали про пространства имен. Почему вы назвали этот код jQuery-плагином? Только потому, что он использует jQuery в работе? Лучше код модуля оформить в другом пространстве имен.
Еще лучше было бы хранить копию внутреннего состояния корзины в localStorage и при необходимости ее валидировать вместо того, чтобы поллить сервер. В этом случае данные будут замечательно синхронизироваться между вкладками.
Про live, localStorage, куки, валидацию, обработку ошибок все учел, буду доделывать.
Добавлю какую-нибудь анимацию.
Да, «плагин» не совсем верное определение, «модуль» действительно больше подходит.
Точно! Автор забыл добавить вывод товаров списком, мозаикой, елочкой, зигзагом; автодополнение в форму заказа, фотогалерею для превьюшек, листалку для книг, корзину для корзин, FM-радио и эмулятор ядра линукс!
На одном магазине использовал как альтернативную замену ajax loader.
там js закодирован но я думаю раскодировать не составит проблем. Ну а если найду то скину исходники в нормальном виде.
я это к тому что я точно не буду его развивать, времени нету совсем, а так вдруг пригодится кому приятно будет что используют, доработали или вообще пригодился пусть даже как идея)
Модуль корзины интернет-магазина на jQuery