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

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

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

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

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

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

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

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

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

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

        Спасибо.
        Andrey
        09 июня 2018, 19:37
        0
        Интересный вариант с использованием AJAX — чем отличается от такой реализации:

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

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

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

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

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

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