ai.egorov Posted June 13, 2013 Share Posted June 13, 2013 Есть суть задачи - аналогично ozon.ru выводить сменяющуюся кнопку для товара "Добавить в корзину" / "В корзине". Делал ли кто-то, но не через проверку товара в корзине а как-то иначе? Я обычно назначаю товару класс с его айдишниками свойств и перевожу кнопку если классы совпадают через hasClass, но скриптов бывает слишком много, надо упростить и сделать легче. Link to comment Share on other sites More sharing options...
Kerm Posted June 13, 2013 Share Posted June 13, 2013 Я делал, можно глянуть тут как работает http://www.charmante.ru/prod11954 Суть в том что возле кнопки скрыта другая кнопка, при клике на кнопку добавить в корзину, первая кнопка скрывается, и открывается другая кнопка с надписью "Перейти в корзину"..при выборе другого цвета или размера, кнопки меняются обратно и снова появляется кнопка "Добавить в корзину"... Link to comment Share on other sites More sharing options...
ai.egorov Posted June 13, 2013 Author Share Posted June 13, 2013 .. Статус не сохранится после обновления страницы. Статус должен быть постоянным, на всех страницах магазина, по техзаданию. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted June 13, 2013 Share Posted June 13, 2013 Что делать если юзер захочет добавить в корзину продукт еще раз? а кнопки уже нет... Может просто вывести какой-нибудь label возле "Add to cart"? 1 Link to comment Share on other sites More sharing options...
ai.egorov Posted June 13, 2013 Author Share Posted June 13, 2013 (edited) .. Решаю задачи ТЗ, по сути это не критично, важен сам статус. В корзине они есть, и если список используется для проверки на наличие id/class в списке, на карточке товара - это еще ладно, один класс или айдишник пробежать даже по большой корзине можно, но когда дело касается product-list страницы, тут начинается напряг. Повторюсь, что скриптов много и нужно другое решение, рабочее, пусть не оригинальное, но не грузящее сайт. Возможно я чего-то не знаю и этот статус можно использовать куда легче. Edited June 13, 2013 by Andrey I. Egorov (see edit history) Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted June 13, 2013 Share Posted June 13, 2013 В product-list, в кнопке есть свойство rel, в котором указан id продукта. В JS-функцию ajaxCart.add можно прописать проверку на наличие продукта в корзине и добавлять соответствующий css-класс 2 Link to comment Share on other sites More sharing options...
Kerm Posted June 13, 2013 Share Posted June 13, 2013 Я же написал что если выбрать другой цвет или размер то кнопка добавить в корзину снова поевляется... Link to comment Share on other sites More sharing options...
ai.egorov Posted June 13, 2013 Author Share Posted June 13, 2013 Я же написал что если выбрать другой цвет или размер то кнопка добавить в корзину снова поевляется... Она исчезнет если просто обновить страницу без кеширования. Но есть спан, который статус ловит: <span class="sh_cart_q_ty">У Вас в корзине 2 товаров</span> Поделитесь как вывели статус в спан? Кстати, "У Вас в корзине.." лучше поменять на "В корзине 2 тов." или "В корзине 2 шт.", чтобы не портить настроение девушкам филологам Link to comment Share on other sites More sharing options...
ai.egorov Posted June 13, 2013 Author Share Posted June 13, 2013 Ладно, пока что этим откуплюсь, изобретать будем в свободное время. Link to comment Share on other sites More sharing options...
Kerm Posted June 13, 2013 Share Posted June 13, 2013 Тот сайт не на престашопе... Link to comment Share on other sites More sharing options...
Kerm Posted June 14, 2013 Share Posted June 14, 2013 Разобрался как сделать тоже самое на престашопе, надо в модуле blockcart в файле ajax-cart.js, в нутри функции добавить свой код: success: function(jsonData,textStatus,jqXHR) {} Код туда необходимо установить который идет уже после события. Link to comment Share on other sites More sharing options...
ai.egorov Posted June 15, 2013 Author Share Posted June 15, 2013 (edited) В blockcart.tpl есть вывод в класс или id кодов товара, его комбинаций и адреса доставки. То же самое можно вытаскивать практически на любой странице, за исключением адреса доставки (зачем он нам?). Через var в верху задаются или изменяются переменные, можно пользоваться ими же чтобы не усложнять себе задачу. Проверка на jquery класса с таким названием как на карточке товара (вообще просто), в блоках товаров на продакт-лист или аналогичных уже сложнее, так как их множество, но сделать можно. Пробуйте. Это решение железно работает, но по-идее код должен быть проще. Правда при том, что я не кодер, а верстальщик мне пока что фиолетово, как он выглядит, главное что дает результат. Edited June 15, 2013 by Andrey I. Egorov (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 16, 2013 Share Posted June 16, 2013 (edited) А в самом js файле внутри той функции что я написал можно указать свои классы или айди куда выводить что то сразу же после нажатия на кнопку добавить в корзину, например указать свои классы для вывода кол-ва товаров в корзине и их общей стоимости, а так же добавить какие ни будь свои эффекты или новые функции при добавлении товара в корзину, например смена кнопки добавить в корзину на перейти в корзину... Edited June 16, 2013 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted June 17, 2013 Share Posted June 17, 2013 Данные для обработки JS-ом нужно передавать в шаблоне blockcart-json.tpl в JSON-формате. А логика находится в методе hookAjaxCall класса BlockCart. Link to comment Share on other sites More sharing options...
ai.egorov Posted June 19, 2013 Author Share Posted June 19, 2013 .. .. Для быстрого решения можно обойтись небольшим скриптом в самом шаблоне. Его же, но с учетом переменных, раскидать по другим шаблонам тоже легче. Один и тот же скрипт для всех страниц где есть кнопка "Купить" не подходит. Link to comment Share on other sites More sharing options...
Recommended Posts