К содержанию

Мини-корзина в ms2

Василий, подскажите, пожалуйста, как в ms2 реализовать miniCart с интерактивным выводом перечня собранных товаров? То есть, как в ShopKeeper'е было: жмакаем «Положить в корзину» — товар летит в корзину, в корзине сразу появляется его название, цена и количество.
Афанасий Петренко
Афанасий Петренко
28 января 2014, 00:51
modx.pro
9 279
Реклама

Комментарии: 21

Василий Наумкин
Василий Наумкин Администратор
28 января 2014, 05:12
Мини-корзина на то и «мини», что выводит только количество товаров и сумму.

Если нужно выводить все товары с картинками — нужно использовать сниппет msCart. В твоём случае его лучше получать через ajax при клике на миникорзину и выводить во всплывающем окне.

Самый простой способ — вызвать сниппет на пустой странице и делать к ней запрос через POST. Базовые принципы здесь.

У нас в магазине так и сделано.
    Афанасий Петренко
    28 января 2014, 05:33
    Получается, товары будут видны только в модальном окне, в лайтбоксе? Так не пойдёт. Нужны именно товары прямо в виджете мини-корзины.

    Ну, понятно, что можно воспользоваться msCart и выводить список товаров при обновлении страницы. Интересно, сильно ли придётся заморачиваться с яваскриптом, чтобы запрограммировать интерактивное обновление списка?
      Василий Наумкин
      Василий Наумкин Администратор
      28 января 2014, 05:43
      Ну так вызывай вместо миникорзину нормальную корзину и товары будет видно постоянно.

      У скрипта есть callbacks, можно обновлять информацию сразу после добавления товара без проблем.
      miniShop2.Callbacks.Cart.add.response.success = function(response) {
      	// console.log(response)
      	// Здесь можно писать запрос к корзине и обновление контента на странице
      }
      Также ты можешь расширить класс корзины и возвращать все нужные данные сразу, без дополнительных ajax запросов.
        Афанасий Петренко
        28 января 2014, 05:47
        Ага, вдуплил, спасибо. Попробую.
          but1head
          but1head Проверенный
          05 февраля 2015, 10:24
          Василий, каким образом можно получить id добавленного товара?
          console.log(response)
          console.log(response.data)

          только мессадж есть и никакой информации о добавленном товаре

          Object {success: true, message: "Количество товара в корзине успешно изменено: 29", data: Object}
          scripts.js:88 Object {key: "89a9e0d0c968a3c2d77b89034d5744d5", total_count: 34, total_cost: 315149, total_weight: 0}
        Aleksandr Huz
        Aleksandr Huz Эксперт
        11 сентября 2014, 04:10
        Василий, привет!

        А можно другую ссылку, а то она битая.
        Интересует вывод корзины как у вас в магазине.

        Спасибо.
          Василий Наумкин
          Василий Наумкин Администратор
          11 сентября 2014, 04:26
          Поправил.
            Aleksandr Huz
            Aleksandr Huz Эксперт
            11 сентября 2014, 11:24
            Спасибо. Все получилось!
          Andrey
          Andrey Старожил
          09 июня 2018, 19:37
          Интересный вариант с использованием AJAX — чем отличается от такой реализации:

          Я создал в миникорзине в блоке
          dropdown-cart [[msCart? tpl="newMsCartTpl"]] -

          с выводом полной корзины и добавил в кнопку добавления товара на
          onClick="window.location.reload()"
          Получилось, что после добавления товара в корзину страница перезагружается и товар обновляется в миникорзине.

          Простой вариант, какие могут быть подводные камни?
          Alexander
          Alexander Старожил
          14 февраля 2014, 19:24
          Василий, подскажи пожалуйста, как обновление корзины реализовать (в левой колонке сайта) при добавлении товаров. Я целый день читаю топики и комментарии, но не силен я в java… Сижу вытаскиваю куски из miniShop2.js :(

          Разумеется ничего не получилось…
            Alexander
            Alexander Старожил
            15 февраля 2014, 12:14
            Очень нужна помощь! Кто нибудь :)
              Alexander
              Alexander Старожил
              16 февраля 2014, 02:28
              Я все еще не теряю надежды… может примеры какие нибудь есть… где искать…
            Игорь Козлов
            Игорь Козлов Старожил
            23 февраля 2014, 21:04
            У Вас получилось сделать товары в миникорзине? Не могли бы Вы поделится решением?
              Афанасий Петренко
              25 февраля 2014, 21:19
              github.com/tanaevr/miniMs2Order вот решение от разработчика: нужно прикрепить на страницу script.js, создать сниппет и постаить рядом с выводом miniShop. У сниппета есть параметр &limit, это кол-во видимых товаров.
                Купчинский Михаил
                09 февраля 2015, 18:37
                Артур, подскажите, что значит поставить рядом с выводом miniShop?

                сорри, сам уже разобрался)
                  Денис Богдановский
                  24 января 2016, 19:42
                  Блин, а я вот не понял :) подскажите плиз, что надо сделать? Где сниппет вызывать «рядом с miniShop» ?

                  Разобрался.
                    Юрий Фомин
                    Юрий Фомин Проверенный
                    21 апреля 2016, 12:50
                    Я вот никак понять фразу «постаить рядом с выводом miniShop» не могу, подскажите пожалуйста, как это реализовать.
                      Денис Богдановский
                      21 апреля 2016, 13:44
                      От идеи интерактивной корзины отказался… а теперь уж и не помню…
                        Юрий Фомин
                        Юрий Фомин Проверенный
                        21 апреля 2016, 17:34
                        Спасибо за ответ. Разобрался, вот только пришлось переделывать немного, но зато работает. Спасибо автору за решение и вам за отклик.
                  Юрий Фомин
                  Юрий Фомин Проверенный
                  19 мая 2016, 17:01
                  В консоли выбивает «parsererror SyntaxError: Unexpected token < in JSON at position 0», что это могло быть и как с ним побороться? Подскажите пожалуйста.
                    Юрий Фомин
                    Юрий Фомин Проверенный
                    19 мая 2016, 19:03
                    В логах modx пусто. Ошибку выдает js скрипт, так как не срабатывает скрипт php для обработки ajax запроса. Но вот что заметил, запуск php скрипта стандартным парсером ( [[!LiveMiniCart? &limit=`100` ]] ) дает положительный результат, а вот парсер Fenom не желает запускать снипет… У кого какое мнение?
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                21