Динамическое обновление мини корзины.

Компонент msMiniCartDynamic для магазина miniShop2 даёт возможность изменять количество добавляемых товаров в корзину, как кнопками ±, так и ручным вводом количества в поле input. Также, при необходимости, есть возможность динамического изменения миникорзины. Далее подробно.

Установка msMiniCartDynamic

Сам пакет выложен в Modstore доступен через установщик MODX — Приложения/Установщик.

Добавление ± к товарам каталога

Для добавления к товарам каталога кнопок +-, необходимо отредактировать форму в чанке miniShop2 — tpl.msProducts.row, должно получиться примерно так:

<form method="post" id="dynamic-[[+id]]" class="ms2_form">
	<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
	<span class="flags">[[+new]] [[+popular]] [[+favorite]]</span>
	<span class="price">[[+price]] [[%ms2_frontend_currency]]</span>
	[[+old_price]]

	[[!msDynamicCount?
		&id=`[[+id]]`
	]]

	<input type="hidden" name="id" value="[[+id]]">
	<input type="hidden" name="options" value="[]">
</form>
  1. Удалить button name=«ms2_action»
  2. Удалить input name=«count»
  3. Добавить в форму идентификатор id=«dynamic-[[+id]]»:
    <form method="post" id="dynamic-[[+id]]" class="ms2_form">
    	...
    	...
    	...
    </form>
  4. Разместить не кэшированный вызов сниппета [[!msDynamicCount]], с обязательным параметром &id=[[+id]]
Подключить скрипт msMiniCartDynamic после jQuery. До или после скрипта miniShop2 — разницы нет, работает так и так.

<script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
Доступны плейсхолдеры:
  • [[+key_d]] — Уникальный ключ товара в корзине
  • [[+count_d]] — Количество этого товара в корзине
  • [[+id_d]] — ID товара (ресурса) в корзине

Динамическое изменение мини-корзины

Компонент имеет возможность динамически изменять состав мини-корзины, для этого достаточно в чанк tpl.msMiniCart поместить вызов сниппета

<div id="msMiniCart" [[+total_count:isnot=`0`:then=`class="full"`:else=``]]>
	<div class="empty">
		<h5><i class="glyphicon glyphicon-shopping-cart"></i> [[%ms2_minicart]]</h5>
		[[%ms2_minicart_is_empty]]
	</div>

	[[!msMiniCartDynamic?
            &img = `24x92`
        ]]

	<div class="not_empty">
		<h5><i class="glyphicon glyphicon-shopping-cart"></i> [[%ms2_minicart]]</h5>
		[[%ms2_minicart_goods]]: <strong class="ms2_total_count">[[+total_count]]</strong> [[%ms2_frontend_count_unit]],
		[[%ms2_minicart_cost]]: <strong class="ms2_total_cost">[[+total_cost]]</strong> [[%ms2_frontend_currency]]
	</div>
</div>
Доступны плейсхолдеры:
  • [[+name_d]] — Название товара (pagetitle)
  • [[+key_d]] — Ключ товара
  • [[+count_d]] — Количество данного товара в корзине
  • [[+price_d]] — Цена товара товара за единицу
  • [[+sum_d]] — Сумма товара
Параметры:
  • &tpl — Чанк для одного товара. По умолчанию: msMinicartDynamic
  • &tplOuter — Чанк обёртка всего блока. По умолчанию: msMinicartDynamicOuter
  • &img — Картинка (миниатюра) товара. По умолчанию: Пусто

Заключение

Сам по себе мой компонент в корзину ничего не добавляет, этим всем занимается miniShop2. msMiniCartDynamic просто инициализирует и ловит определённые события изменения корзины, подсчитывает кол-во и сумму определённого товара и выводит всё это дело на экран.

ps. Обновлено 07.07.2016г.
Марат Марабар
20 апреля 2016, 10:17
modx.pro
9
16 396
+5
Поблагодарить автора Отправить деньги

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

Павел Гвоздь
20 апреля 2016, 15:25
+1
Неплохо бы из раздела "Готовые решения" перенести пост в раздел "Новые дополнения и их версии", раз уж это компонент.
    Марат Марабар
    20 апреля 2016, 16:26
    0
    Да, наверно — перенёс.
      adminixi
      25 апреля 2016, 00:10
      0
      Здравствуйте!

      Как сделать количество 1 по умолчанию?
        Юрий Фомин
        25 апреля 2016, 08:45
        0
        Подставь «1» в плейсхолдер вместо «0», в чанке для недобавленых товаров.
          adminixi
          30 апреля 2016, 12:03
          0
          Где это находится в msDynamicCount?
            Юрий Фомин
            01 мая 2016, 11:27
            +1
            Вообще в плейсхолдере указать «1» будет неверно, так как в input указывается не сколько добавить, а сколько уже в корзине данного товара.
            У компонента есть 2 чанка для вывода данных у товара (название не помню, так как пришлось искать другое решение): 1) для товаров которых еще нет в корзине, 2) для товаров которые уже в корзине. В них в input и указывается кол-во товаров, о котором вы и спрашиваете («Как сделать количество 1 по умолчанию?»).
              Марат Марабар
              01 мая 2016, 15:15
              0
              Вообще в плейсхолдере указать «1» будет неверно, так как в input указывается не сколько добавить, а сколько уже в корзине данного товара.
              Нет, немного не так.
              При загрузке страницы, каждому товару подставляется кол-во, находящихся уже в корзине.
              Но при этом никто не запрещает тут же изменять это количество. При следующей загрузке, это кол-во и отобразится.

              А в остальном — да, не хорошо по умолчанию 1 указывать. Нажимая на "-" получаем ошибку добавления, нажимая на "+" — 2 товара в корзине.
    Юрий Фомин
    20 апреля 2016, 19:08
    0
    Марат, здорово!
    Я как раз искал решение подобной задачи.
    Все работает. Но при добавлении товара вылетают 2 сообщения о добавлении joxi.ru/DrlOdW4uJeLJAP вместо одного, хотя товар добавляется один. Был бы рад если это получится решить, могу малость спонсировать.
    Юрий Фомин
    19 мая 2016, 17:06
    0
    Марат, а твоим дополнением можно ли вывести превью товара? если да то как? Подскажи пожалуйста.
      Марат Марабар
      19 мая 2016, 21:13
      0
      В мини корзине? Пока нет.
      Но мысль, добавить такую возможность, есть. +добавить возможность удалять отдельно взятый товар из мини-корзины.
        Юрий Фомин
        20 мая 2016, 10:19
        0
        По поводу удаления отдельного товара… получить бы ключ продукта ( [[+key]] ). К сожалению я на php из далека смотрю, давно хочу освоить, да вот никак не доберусь, а надо. В любом случае тебе спасибо за старания.
          Марат Марабар
          20 мая 2016, 20:02
          0
          В сниппете msMiniCartDynamic, ключ товара в плейсхолдере — [[+key_d]]
          Klike
          07 июля 2016, 10:06
          0
          Не появилось ли ещё превью товара в мини-корзине?)
            Марат Марабар
            07 июля 2016, 10:14
            +1
            Пока нет. Вечером постараюсь добавить, но не обещаю что сегодня.
            Со временем беда.
              Klike
              07 июля 2016, 10:29
              0
              Понимаю) Будет здорово!
              Марат Марабар
              07 июля 2016, 18:05
              +2
              Добавил картинку в мини-корзину, пакет в modstore — можно обновляться.
                Klike
                07 июля 2016, 18:06
                0
                Очень круто! Спасибо большое! Чуть позже опробую!
                  Klike
                  12 июля 2016, 16:59
                  +1
                  Всё отлично работает! Спасибо, Марат! И, раз уж есть тег «a» в чанке, то хорошо было бы и ссылку (плейсхолдер) на товар добавить

                  <li>
                      <div class="media">
                          <a class="pull-left" href="#">
                              <img class="media-object" src="[[+img_d]]" alt="">
                          </a>
                          <div class="media-body">
                              <h4 class="media-heading">[[+name_d]]</h4>
                              <div>
                                  <span>[[+count_d]]</span> x <span>[[+price_d]]</span> = <span>[[+sum_d]]</span>
                              </div>
                          </div>
                      </div>
                  </li>
                    Марат Марабар
                    12 июля 2016, 18:03
                    0
                    Это я его заменить на span забыл))
                    Добавлю в следующей версии.
            Илья
            06 июля 2016, 16:51
            0
            Добрый день.

            Не работают кнопки +-.

            Выделяет просто как текст. В чём может быть причина?
              Марат Марабар
              06 июля 2016, 16:54
              +1
              Не знаю.
              Есть где посмотреть?
                Илья
                06 июля 2016, 17:57
                0
                gorthour.temp.swtest.ru/kat/buket/
                  Марат Марабар
                  06 июля 2016, 18:43
                  +1
                  В форму надо добавить идентификатор id=«dynamic-[[+id]]»
                  <form method="post" id="dynamic-[[+id]]" class="ms2_form">
                  	...
                  	...
                  </form>
                  Моя вина, пропустил в документации — исправлю.
                  И обнови пакет, сегодня новую версию выложил.
                    Илья
                    07 июля 2016, 09:53
                    0
                    Да, с добавлением этой строчки заработало, спасибо!
                Купчинский Михаил
                27 августа 2016, 09:44
                0
                Добрый день! Странное поведение мини корзины на сайте. Использую msMiniCartDynamic в мини корзине в шапке сайта. Если сайт открывается в браузере первый раз (), то при добавлении товара в корзину не выводятся товары в msMiniCartDynamic. Стандартный функционал мини корзины Минишопа срабатывает, общее количество и стоимость показываются. После обновления страницы товары в msMiniCartDynamic показываются. В дальнейшем все начинает работать как положено, и товары попадают в msMiniCartDynamic без обновления страницы. После закрытия браузера все повторяется снова, открываешь браузер, и при добавлении товара в корзину msMiniCartDynamic не выводит товар.
                  Марат Марабар
                  27 августа 2016, 18:05
                  0
                  Какая версия msMiniCartDynamic?
                  Скрипт подключен?
                  <script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
                    Купчинский Михаил
                    28 августа 2016, 11:23
                    0
                    Версия 1.0.4-pl
                    Скрипт подключен
                    Павел
                    14 октября 2016, 07:28
                    0
                    Приветствую,
                    аналогичная проблема как описал Mихаил выше, при этом в консоль ошибок ни каких не падает.
                    На сайте подключен Sticky Plugin v1.0.3 for jQuery (jquery.sticky.js), при его отключении всё работает так как надо.

                    Из предупреждений, есть вот такое — Похоже, что этот сайт использует эффект позиционирования связанный с прокруткой. Это может не очень хорошо работать с асинхронным панорамированием; см. developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects чтобы получить более подробную информацию и присоединиться к обсуждению связанных с этим инструментов и возможностей!
                      Марат Марабар
                      14 октября 2016, 09:18
                      0
                      Подключил себе этот плагин v1.0.4, запозиционировал миникорзину — всё работает.
                      Ссылка есть на сайт?
                        Павел
                        14 октября 2016, 09:59
                        0
                        Отправил ссылку.
                          Марат Марабар
                          14 октября 2016, 10:24
                          0
                          Используй для комментирования теги MODX
                          <!-- Вместо этих -->
                          [[- Эти ]]
                          Иначе два идентификатора на странице id=«mc-dynamic».
                            Павел
                            14 октября 2016, 11:06
                            0
                            Оставил на странице, один mc-dynamic, проблема осталась. Как быть если нужно дважды подключить, на одной странице?
                        Купчинский Михаил
                        14 октября 2016, 09:31
                        0
                        У Меня, к стати, эта ситуация так и не исправилась. Сейчас она на двух сайтах. Основной момент, это то, что миникорзина не срабатывает только в том случае, если сайт заново открыт в браузере и на нем после добавления товара в корзину не обновлялась страница. Если страницу обновить, или перейти на другую, то все потом хорошо работает. Можно удалять и добавлять товары в корзину. Миникорзина срабатывает корректно.
                        P.S На обоих сайтах один набор скриптов.
                          Марат Марабар
                          14 октября 2016, 10:26
                          0
                          У тебя там конфликт с геолокацией. Попробуй его скрипт подключить после.
                            Купчинский Михаил
                            14 октября 2016, 10:29
                            0
                            На втором сайте нет геолокации. Картина та же. Скину в личку адреса
                              Андрей Сухомозгий
                              16 октября 2016, 00:20
                              0
                              Михаил, удалось ли решить проблему? У меня тоже самое — при первом заходе не обновляет ничего
                                Андрей
                                16 октября 2016, 02:35
                                0
                                Тоже словил такую проблему :) Решил кто нибудь?
                                  Купчинский Михаил
                                  17 октября 2016, 10:29
                                  0
                                  Нет, пока я не решил.
                                    Марат Марабар
                                    19 октября 2016, 15:49
                                    0
                                    Давайте ссылки на сайт — marat@marabar.ru
                                      Купчинский Михаил
                                      19 октября 2016, 15:53
                                      0
                                      Отправил ссылки
                                      Марат Марабар
                                      19 октября 2016, 16:25
                                      0
                                      В админку доступ по первой ссылке нужен.
                                      Купчинский Михаил
                                      19 октября 2016, 16:31
                                      0
                                      Должен на почту прийти доступ.
                                      Марат Марабар
                                      19 октября 2016, 17:57
                                      0
                                      В общем там у тебя какой то компонент не даёт записать в сессию, и не только msMiniCartDynamic-у, adminTools через раз, msRelated и мой только после обновления страницы, при условии наличия товара в корзине.
                                      Марат Марабар
                                      19 октября 2016, 17:59
                                      0
                                      При этом msRelated пуст, отсюда и ошибки в логе.
                                      Купчинский Михаил
                                      19 октября 2016, 18:28
                                      0
                                      Это именно компонент MODX? Или, какой-то из скриптов?
                                      На обоих сайтах одинаковый набор скриптов — один шаблон.
                                      И компонент наверное getRelated — а не msRelated. Правда на втором сайте он не стоит.
                                      Марат Марабар
                                      19 октября 2016, 18:43
                                      0
                                      Не знаю. Там разбираться надо.
                                      msRelated — это название массива в сессии и пишет его плагин с ID=7, и почему то он пуст.
                                      Марат Марабар
                                      19 октября 2016, 19:03
                                      0
                                      Слушай, чота вспомнилось: год назад, примерно, ко мне обращались с каким то конфликтом на сайте, и тогда, если мне память не изменяет, был трабл с class_key компонента SEO(чего то там). После его отключения встало всё на свои места.
                                      Пробуй деактивировать их плагины поочерёдно, чистить кеш и проверять.
                                      Возможно поможет.
                                      Купчинский Михаил
                                      19 октября 2016, 20:49
                                      0
                                      Попробовал на тестовом сервере.
                                      Деинсталировал все компоненты, кроме: miniShop2, mSearch2, pdoTools. Отключил все скрипты, оставил только:
                                      <script type="text/javascript" src="assets/js/jquery-2.1.4.min.js"></script>
                                      <script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
                                      Отключил все лишние плагины.
                                      Эфект тот-же!!!
                                      Марат Марабар
                                      21 октября 2016, 21:38
                                      0
                                      Сейчас должно быть всё нормально.
                                      Пакет в modstore.
                                      Купчинский Михаил
                                      23 октября 2016, 20:27
                                      0
                                      Да, после обновления все ОК. Спасибо!!!
                  Kirill Spevakov
                  29 августа 2016, 11:31
                  0
                  Добрый день!
                  Пытаюсь вывести название товара в мини-корзине, однако на месте названия пусто, при добавлении нового или удалении уже имеющегося товара из корзины появляется [[+name_d]].
                  скрипт подключен, версия дополнения 1.0.4.
                  Цена, количество и сумма товара отображаются нормально.
                  Подскажите в чем может быть причина?
                    Марат Марабар
                    29 августа 2016, 21:10
                    0
                    Трудно сказать — надо смотреть. Есть возможность?
                      Kirill Spevakov
                      30 августа 2016, 08:38
                      0
                      выслал на почту
                        Марат Марабар
                        30 августа 2016, 13:33
                        +1
                        Можно обновиться, пакет в репозитории.
                          Kirill Spevakov
                          30 августа 2016, 13:37
                          0
                          Спасибо! Все работает!
                            Максим
                            30 августа 2016, 19:04
                            0
                            та же проблема, версия 1.0.5…
                            При добавлении в корзину появляется [[+name_d]], при обновлении страницы исчезает, но вместо нее не появляется название…

                            и кстати с парсером fenom дружит дополнение?
                              Алексей Андреев
                              30 августа 2016, 19:30
                              0
                              Поставил сюда всё самое свежее — http://s6446.h3.modhost.pro/index.php?id=4
                              Тоже появляется [[+name_d]]
                                Марат Марабар
                                30 августа 2016, 19:35
                                0
                                Картинка должна быть сгенерирована
                                  Максим
                                  30 августа 2016, 19:55
                                  0
                                  т.е. чтобы название появилось, нужна картинка?
                                    Марат Марабар
                                    30 августа 2016, 19:58
                                    0
                                    Если нет картинки не нужно её указывать в чанках. Всё-равно ссылка на картинку будет битая, зачем?..

                                    В следующей версии сделаю проверку.
                                      Максим
                                      30 августа 2016, 20:15
                                      0
                                      Т.е. если картинку убрать из чанков и сниппетов, должно появиться название?
                                      (пробовал, не появилось)
                                        Марат Марабар
                                        30 августа 2016, 20:21
                                        0
                                        Из каких сниппетов?
                                        Нужно не указывать параметр &img в вызове снипета. По умолчанию сейчас пусто.
                                        Ну и из чанков удалить плейсхолдеры [[+img_d]]

                                        Сейчас обновление залью.
                                          Максим
                                          30 августа 2016, 20:47
                                          0
                                          Спасибо.
                                          Марат Марабар
                                          31 августа 2016, 11:55
                                          0
                                          Можно обновляться
                                          Максим
                                          31 августа 2016, 13:48
                                          0
                                          Спасибо, вроде все работает как надо.
                      Олег
                      26 сентября 2016, 14:17
                      0
                      Здравствуйте Марат, у меня вопрос по сниппету msMinicartDynamic
                      У меня не обновляется корзина, после события положить в корзину, если обновить страницу все работает корректно.

                      С точки зрения удаление, необходимо добавить key товара в список, и все удаляется, а что бы добавить товар динамически, что нужно сделать?

                      Заранее спасибо за ответ, я пользуюсь версией 1.0.6
                        Александр
                        26 сентября 2016, 14:40
                        +1
                        Только собрался свой вопрос задать и меня опередили)
                        Мне вот не совсем понятно как реализовать кнопки ± в мини-корзине. Если прописать то же самое, что в tpl.msProducts.row, то всё работает, но id-шники задваиваются и второй клик по ± уже не срабатывает.
                        Как быть? может я пропустил что-то в документации?
                          Олег
                          26 сентября 2016, 15:32
                          0
                          Ну если брать хронологически, да. Но суть вопроса у нас разные.

                          Вы задаете вопрос по msDynamicСount, а я по msMiniCartDynamic

                          У меня не обновляется миникорзина, после того как я положил товар)

                          А у Вас проблемы с Count в определенных местах магазина.

                            Марат Марабар
                            27 сентября 2016, 08:00
                            0
                            В мини корзине ± и небыли предусмотрены
                              Александр
                              28 сентября 2016, 16:12
                              0
                              А сколько будет стоить доработка компонента? в личку не достутачался…
                              мне нужно знать, можно ли доделать msMiniCartDynamic или где-то заказывать разработку нового.
                                Марат Марабар
                                28 сентября 2016, 16:26
                                0
                                Я в субботу буду на связи. А доработать можно — 3000 руб.
                                  Александр
                                  29 сентября 2016, 16:26
                                  0
                                  Хорошо, спасибо ) Согласую с заказчиком
                            Марат Марабар
                            27 сентября 2016, 07:58
                            0
                            Покажешь?
                              Олег
                              27 сентября 2016, 12:22
                              0
                              Это какому пользователю адресовано сообщение?
                                Марат Марабар
                                27 сентября 2016, 13:10
                                0
                                Тебе.
                                  Олег
                                  27 сентября 2016, 20:23
                                  0
                                  Итак на текущий момент у меня вот такая корзина, prntscr.com/cn1c1r

                                  Общий сниппет msMiniCart

                                  <div id="msMiniCart" class="{$total_count > 0 ? 'full' : ''}">
                                      <div class="empty">
                                          <h5><i class="glyphicon glyphicon-shopping-cart"></i> {'ms2_minicart' | lexicon}</h5>
                                          {'ms2_minicart_is_empty' | lexicon}
                                      </div>
                                  
                                      <div class="not_empty">
                                  [[!msMiniCartDynamic]]
                                                  <li>
                                                      <h6 class="text-center custom_bascket">Выгода: <strong class="ms2_total_cost custom_sale">180</strong> [[%ms2_frontend_currency]]</h6>
                                                    </li>
                                                    <li>
                                                      <h5 class="text-center">Подитог: <strong class="ms2_total_cost">{$total_cost}</strong> {'ms2_frontend_currency' | lexicon}</h5>
                                                    </li>
                                                    <li class="margin-0">
                                                      <div class="row">
                                                        <div class="col-xs-6"> <a href="{$_modx->makeUrl(20)}" class="btn">В корзину</a></div>
                                                        <div class="col-xs-6 "> <a href="#" class="btn">Продолжить</a></div>
                                                      </div>
                                                    </li>
                                      </div>
                                  </div>
                                  Обертка

                                  <div id="msCart">
                                  <ul id="mc-dynamic">
                                      [[+output]]
                                  </ul>
                                  </div>
                                  И основной чанк

                                  <li id="[[+key_d]]">
                                      <div class="clearfix">
                                          <div class="media col-xs-10">
                                              <a class="pull-left" href="[[~[[+id_d]]]]">
                                                  <img width="50" class="media-object" src="[[+img_d]]" alt="">
                                              </a>
                                              <div class="media-body">
                                                  <h6 class="media-heading">[[+name_d]]</h6>
                                                  <div>
                                                     <span>[[+sum_d]] руб</span>
                                                     
                                                  </div>
                                              </div>
                                          </div>
                                          <form method="post" class="ms2_form col-xs-2 remove">
                                              <input type="hidden" name="key" value="[[+key_d]]">
                                              <input type="hidden" name="id" value="[[+id_d]]">
                                              <button class="btn btn-default minicartbuttom" type="submit" name="ms2_action" value="cart/remove" title="Удалить"><i class="icon-close"></i></button>
                                          </form>
                                      </div>
                                  </li>

                                    Олег
                                    28 сентября 2016, 13:40
                                    0
                                    Я забыл написать Minishop 2.4.2
                            Олег
                            01 октября 2016, 16:30
                            0
                            Спасибо большое за помощь Марату. Оказалось решение проблемы добавить скрипт

                            <script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
                              Влад
                              19 октября 2016, 12:58
                              0
                              Такая проблема. Все сделал по инструкции но при добавления товара пишет «Ошибка при изменении количества товара в корзине». Правил чанк tpl.msProducts.row. Происходит что то странное, сначала если выставить колл. 1 он добавит в корзину, потом может добавить 10 а потом пробую добавить другой товар пишет ошибку, он то добавляет то вовсе отказывается добавлять с ошибкой
                                Володя
                                24 октября 2016, 23:14
                                +1
                                просьба автору поправьте вот этот момент в сниппете
                                joxi.ru/D2P6LEMId7B56r
                                ато пользователи ловят глюки и мучаются в поиске что же не так.
                                Спасибо!
                                Семен Морозов
                                25 октября 2016, 12:10
                                0
                                Добрый день. Подскажите пожалуйста как вывести у товара выбранные опции?

                                Феном тут не срабатывает
                                {if $product.options?}
                                                                <div class="small">
                                                                    {$product.options | join : '; '}
                                                                </div>
                                                            {/if}
                                  Марат Марабар
                                  25 октября 2016, 12:26
                                  0
                                  Может через msOptions?
                                    Семен Морозов
                                    25 октября 2016, 17:04
                                    0
                                    Вы меня наверно не так поняли. Мне нужно вывести все имеющиеся опции у товара. Мне нужно вывести только те опции, что добавились в заказ. С этим снипетом не получилось(
                                      Семен Морозов
                                      26 октября 2016, 21:52
                                      0
                                      Здравствуйте. Помогите пожалуйста решить вопрос с опциями.

                                      [[msOptions?
                                          &options=`color,size`
                                          &tpl=``
                                      ]]
                                      Этот код тут не подходит. Мне нужно вывести только те опции с которыми товар был добавлен в корзину. Как это сделать?
                                        Марат Марабар
                                        27 октября 2016, 16:17
                                        0
                                        Пока никак.
                                        На следующей неделе добавлю такую возможность.
                                          Семен Морозов
                                          27 октября 2016, 16:30
                                          0
                                          О! Огромное спасибо буду ждать обновления!)
                                            Семен Морозов
                                            27 октября 2016, 17:57
                                            4
                                            0
                                            Мне тут подсказалаи, что вот так можно сделать:

                                            Изменения в msMiniCartDynamic строка 37
                                            $out .= $modx->getChunk($tpl, array(
                                                        'name_d' => $t['title'],
                                                        'id_d' => $v['id'],
                                                        'key_d' => $k,
                                                        'count_d' => $v['count'],
                                                        'price_d' => $v['price'],
                                                        'sum_d' => $v['count'] * $v['price'],
                                                        'img_d' => $t['img_path'],
                                                        'options_d' => implode(';',$v['options']),
                                                    ));
                                            в core/components/msminicartdynamic/model/msminicartdynamic/msminicartdynamic.class.php строка 80
                                            $success['data'] = array(
                                                                    'key_d' => $k,
                                                                    'id_d' => $v['id'],
                                                                    'name_d' => $t['title'],
                                                                    'count_d' => $v['count'],
                                                                    'price_d' => $v['price'],
                                                                    'sum_d' => $v['count'] * $v['price'],
                                                                    'img_d' => $t['img_path'],
                                                                    'options_d' => implode(';',$v['options']),
                                                                );
                                             В [[+options_d]] выводятся все опции через ;
                                            Если все гуд, внесете в компонент?
                                              Александр
                                              04 ноября 2016, 03:53
                                              0
                                              Да, было бы неплохо вынести в мини-корзину старую цену.
                                              Добавил ваши строки себе, но пока вообще ничего не выводит. Как-то можно из options вытащить только old_price?

                                              Пробовал заменить
                                              'options_d' => implode(';',$v['options']),
                                              на
                                              'old_price_d' => $v['old_price'],
                                              Но в миникорзине выводится просто плейсхолдер [[+old_price_d]] прямо со скобками
                                      adminixi
                                      24 декабря 2016, 19:26
                                      0
                                      Где посмотреть пример tpl и tplOuter?
                                        Андрей
                                        27 декабря 2016, 09:43
                                        0
                                        Добавление ± к товарам каталога позволит сделать такой функционал как в этом товаре на примере дополнительных модулей?
                                          Rrp2010
                                          15 января 2017, 19:03
                                          0
                                          Не пойму, по какому принципу, компонент осуществляет сортировку при выводе изображения в [[+img_d]]. Есть ли возможность выводить строго первое, по порядку из галереи?
                                            Дмитрий
                                            19 февраля 2017, 17:51
                                            0
                                            У меня при стандартной разметки, вместо изображения товара ничего не выводит.
                                            adminixi
                                            23 января 2017, 11:51
                                            0
                                            Скажите, как сделать, чтобы товар только по кнопке В КОРЗИНУ в нее уходил, а не при изменении количества...?
                                              Руслан
                                              22 февраля 2017, 23:07
                                              0
                                              Всех приветствую.
                                              Не совсем понятно что нужно указать в "&img =" что бы появились картинки.
                                              Помогите разобраться.
                                                Дмитрий
                                                24 февраля 2017, 16:58
                                                0
                                                Я вот тоже думал, но так и не понял. Пока применил такой костыль, указав в шаблоне обертки такую ссылку у изображения:

                                                /assets/images/products/[[+id_d]]/small/img-product.jpg

                                                Минус в том, что нужно обязательно для каждого товара указывать название картинки одинаково.
                                                  Валерий
                                                  06 марта 2017, 06:22
                                                  0
                                                  В последней версии Minishop были изменения с превью изображений.
                                                  Теперь в данном сниппете необходимо указывать то, что указано в источнике файлов -> MS2 Images -> thumbnails (по ум. 'small')

                                                  [[!msMiniCartDynamic?
                                                  &img = `small`
                                                  ]]
                                                Дмитрий Стрельников
                                                27 февраля 2017, 15:11
                                                0
                                                Добрый день! При нажатии «добавить в корзину» Пишет: Ошибка добавления в корзину: неверное количество «0».
                                                «1» в плейсхолдер вместо «0», в чанке для недобавленых товаров — исполнил, но товар добавляется по-прежнему только через +
                                                Подскажите, плз., в чем тут дело?
                                                  adminixi
                                                  01 марта 2017, 12:25
                                                  0
                                                  Добрый день.

                                                  Не работает динамическое обновление. Скрипт выдает ошибку.



                                                    varanika
                                                    25 марта 2017, 19:28
                                                    0
                                                    А у меня что-то удивительное происходит)))
                                                    Беру стандартный минишоповский чанк, удаляю все по инструкции, дописываю скрипт. После нажатия на + (или кнопку добавить ранее) динамически появляется такая конструкция на месте корзины:

                                                    Ну или такая. После обновления страницы все на месте уже :)

                                                    Обновила страницу и оп:
                                                    <img src="" />
                                                      varanika
                                                      25 марта 2017, 19:41
                                                      0
                                                      Все, это не лыжи виноваты, а я не удалила второй вызов, в итоге вместо msMiniCart вызывала msMiniCartDynamic, получилось он сам себя звал, а аякс не обрабатывал параметры :)
                                                      mngatoff
                                                      28 марта 2017, 15:15
                                                      0
                                                      Привет! у меня два вопроса:
                                                      1. в миникорзине будет ли работать изменение количества?
                                                      2. почему-то у меня добавляется не основное фото товара, а последнее, как быть?
                                                        Марат Марабар
                                                        28 марта 2017, 15:36
                                                        0
                                                        Привет.
                                                        1. Попробуй добавить в миникорзину содержимое чанка msDynamicCountChange, по идее должно работать — я не проверял.
                                                        2. Выше не подходит решение? Я не тестировал ещё с новой версией miniShop2 — ничего не могу сказать. В планах, в апреле, есть желание переписать компонент.
                                                          mngatoff
                                                          28 марта 2017, 15:42
                                                          0
                                                          1. добавил просто форму из обычной корзины. Срабатывает, но нужно дописать триггер клик на скрытую кнопочку «cart/refresh»
                                                          2. перегенерировал превьюшки, все наладилось. У них при импорте у всех rank = 0 почему-то был
                                                        Юлия
                                                        27 апреля 2017, 02:13
                                                        0
                                                        Здравствуйте! Подскажите пожалуйста, появилась ли возможность выводить опции товара?
                                                          Madao
                                                          15 мая 2017, 19:55
                                                          0
                                                          Доброго времени суток. Столкнулся с такой проблемой, итоговая сумма заказа не обновляется динамически. Такой функционал вообще есть в данном компоненте? в документации указан плейсхолдер только [[+sum_d]] — Сумма товара, но не итоговая сумма заказа.
                                                          Может кто подскажет как забороть сию неприятность?

                                                          PS. И насколько я понял, вывод опций (именно тех опций, с которыми товар улетел в корзину, а не всех вообще) товара так и не реализован?
                                                            Madao
                                                            16 мая 2017, 16:26
                                                            0
                                                            Вопрос по поводу динамического изменения суммы снимаю. Была ошибка в определении класса для блока, где выводится сумма.
                                                            По поводу опций вопрос пока остается открытым.
                                                            Олег Щавелев
                                                            06 июня 2017, 22:11
                                                            0
                                                            Мне хотелось, уточнить. Кто-нибудь разобрался(сталкивался) с выводом плейсхолдера old_price Есть вопрос в сообщесте, но ответа нет. Хотелось разобраться в данном вопросе.
                                                              Ника
                                                              14 июля 2017, 12:28
                                                              0
                                                              Добрый день!
                                                              Подскажите, пожалуйста! Можно ли реализовать изменение цены в зависимости веса данным компонентом?
                                                                Илья
                                                                02 октября 2017, 18:18
                                                                0
                                                                Здравствуйте, у меня проявилась уже описанная ранее проблема — если первый раз добавить товар в корзину, сообщение о добавлении появляется, но корзина не обновляется, после обновления страницы все становится нормально, вроде всё что может повлиять на фронтэнд отключал, эффекта нет…

                                                                Подскажите пожалуйста в какую сторону копать…
                                                                  Alex
                                                                  02 октября 2017, 23:42
                                                                  +1
                                                                  Всунуть куда-то в код шаблона вот это
                                                                  <script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
                                                                  И миникорзина должна обновляться как положено.
                                                                  UPD. Читайте внимательно описание компонента, там этот момент указан. Видимо по каким-то причинам автоматическая подгрузка скрипта не была реализована.
                                                                    Илья
                                                                    03 октября 2017, 10:36
                                                                    0
                                                                    Так добавлен.
                                                                    Предполагаю что это из-за того что у меня фактически 2 вызова — на десктопную и мобильную версию, в зависимости от версии 1 display:none. Пробовал через jquery добавлять
                                                                    [[!msMiniCart]]
                                                                    но он добавляется статично и так же обрабатывается после обновления страницы…
                                                                    Как их тогда развести если 1 вызов мне нужен в header а 2 в footer…
                                                                      Alex
                                                                      03 октября 2017, 13:18
                                                                      0
                                                                      На счет двух вызовов не знаю, не сталкивался. Вам подойдет для разделения на десктоп и мобильный дополнение mobileDetect.
                                                                      Еще, если мне не изменяет память, дополнение msMinicartDynamic не пересчитывает динамически полную сумму корзины, поэтому я для пересчета итоговой суммы оставил логику стандартной корзины. Вот код как у меня выглядит миникорзина.
                                                                      <div id="msCart" class="modal-wrap">
                                                                          <div class="full-cart-msg not_empty">
                                                                              {$_modx->runSnippet('!msMiniCartDynamic', [
                                                                                  'tplOuter' => 'minicartModalOuter.tpl',
                                                                                  'tpl' => 'minicartModalRow.tpl',
                                                                                  'img' => 'small'
                                                                              ])}
                                                                          </div>
                                                                          <div class="minicart-full-info">
                                                                              {'ms2_minicart_goods' | lexicon} <strong class="ms2_total_count">{$total_count}</strong> {'ms2_frontend_count_unit' | lexicon},
                                                                              {'ms2_minicart_cost' | lexicon} <strong class="ms2_total_cost">{$total_cost}</strong> грн.
                                                                          </div>
                                                                          <div class="clr"></div>
                                                                      </div>
                                                                      Скорее всего вы что-то не правильно сделали. Попробуйте сделать точно по документации. Прямо один в один.
                                                                        antonlynin
                                                                        25 января 2018, 11:25
                                                                        0
                                                                        Добрый день. А вы не могли бы показать чанки
                                                                        'tplOuter' => 'minicartModalOuter.tpl',
                                                                                    'tpl' => 'minicartModalRow.tpl',
                                                                        И сталкивались вы стакой проблемой — не всегда обновляется в миникарзине аяксом.
                                                                        И на странице товара не всегда автоматически обновляется.
                                                                        Он как то не стабильно работает, то все отлично, то через раз.
                                                                        Спасибо!
                                                                          antonlynin
                                                                          25 января 2018, 13:14
                                                                          0
                                                                          Проблему решил, было 2 вызова миникорзины, пришлось от одного отказаться.
                                                                          Появился новый вопрос с выводом опций
                                                                  Юрий
                                                                  20 октября 2017, 20:02
                                                                  0
                                                                  Подскажите пожалуйста, можно ли как то вывести артикул [[+article]] в msMinicartDynamic?
                                                                    Сергій
                                                                    21 декабря 2017, 14:36
                                                                    0
                                                                    Доброго дня всем, у меня не работает кнопка удалить товар. Кто может подсказать в чем проблема?
                                                                      Sergey (Sentinel)
                                                                      31 января 2018, 20:56
                                                                      0
                                                                      проверь все классы по выводу, все работает
                                                                      Sergey (Sentinel)
                                                                      31 января 2018, 20:52
                                                                      0
                                                                      Подскажите, как fenom заставить работать?
                                                                      И работают ли модификаторы в плейсхолдерах? т.к. так ничего не выводит!
                                                                      [[+img_d:isnotempty=`<a href="[[~[[+id_d]]]]"><img src="[[+img_d]]" alt="[[+name_d]]" /></a>`]]
                                                                        Sergey (Sentinel)
                                                                        20 апреля 2018, 09:34
                                                                        0
                                                                        С тегами fenom проблема при обновлении страницы {$img_d}
                                                                        они не работают, скажите, что делаю не так?
                                                                          Sergey (Sentinel)
                                                                          20 апреля 2018, 09:48
                                                                          0
                                                                          Забыли в сниппите $pdo = $modx->getService('pdoFetch'); и $pdo->getChunk
                                                                            Sergey (Sentinel)
                                                                            31 июля 2019, 11:57
                                                                            0
                                                                            В самой миникорзине сделал чтобы работало кол-во
                                                                            вот код чанка msMinicartDynamic
                                                                            <div class="cart-item ptb-20 border-bottom">
                                                                            	<div class="cart-img pull-left">
                                                                            	    {if $img_d != '' && $img_d != '/small/'}<a href="[[~[[+id_d]]]]" class="product-image" title="{$name_d}"><img alt="{$name_d}" src="{$img_d}"></a>{/if}
                                                                            	</div>
                                                                            	<a href="[[~[[+id_d]]]]">[[+name_d]]</a>
                                                                            	<div class="cart-item-details clear">
                                                                            		
                                                                            		<span class="price">[[+price_d]] </span>
                                                                            		<div class="details-qty pull-left details-qty-60">
                                                                            			<span>Кол-во:</span>
                                                                            			<form method="post" id="dynamic-[[+id_d]]" class="ms2_form">
                                                                                			[[!msDynamicCount?
                                                                                        		&id=`[[+id_d]]`
                                                                                        	]]
                                                                                    	    <input type="hidden" name="id" value="[[+id_d]]">
                                                                            	            <input type="hidden" name="options" value="[]">
                                                                                    	</form>
                                                                            		</div>
                                                                            		<div class="remove-edit">
                                                                            			<ul>
                                                                            				<li>
                                                                            				    <form method="post" class="ms2_form">
                                                                                                    <input type="hidden" name="key" value="[[+key_d]]">
                                                                                                    <input type="hidden" name="id" value="[[+id_d]]">
                                                                                                    <button type="submit" name="ms2_action" value="cart/remove" title="Удалить"><i class="fa fa-trash-o"></i></button>
                                                                                                </form>
                                                                            			    </li>
                                                                            			</ul>
                                                                            		</div>
                                                                            		
                                                                            	</div>
                                                                            </div>
                                                                              Олег
                                                                              24 января 2022, 14:41
                                                                              0
                                                                              Когда добавляю товар в корзину появляется jgrowl-попап об успешном добавлении товара в корзину, а счетчик товара прибавляет один товар и сразу же отнимает. Чтобы добавить единицу товара в корзину нужно нажать 1-3 раза по плюсу. Если после нажатия на плюс сразу перейти в корзину — товар добавляется, иначе — возможно да, а может и нет. Что-то мешает, причем каждый раз необходимо разное количество попыток чтобы увеличить количество товара.
                                                                              Кто-нибудь знает где примерно искать причину или может сталкивался с подобным?
                                                                                Олег
                                                                                24 января 2022, 16:58
                                                                                0
                                                                                мини-корзина открывается по клику:
                                                                                document.addEventListener("click", function(event) {
                                                                                        if (event.target.closest(".header .cart")) {
                                                                                          $.ajax({  
                                                                                            type: "POST",  
                                                                                            url: '[[~10]]',
                                                                                            success:  function(data) { 
                                                                                              if (data){
                                                                                                $('.cart__list').html(data);
                                                                                              }else{
                                                                                                miniShop2.Message.error('Что-то пошло не так, попробуйте позже!');
                                                                                              }
                                                                                            }
                                                                                          });
                                                                                          cart1.classList.add("cart--active");
                                                                                        }
                                                                                        if (!event.target.closest(".header .cart")) {
                                                                                          cart1.classList.remove("cart--active");
                                                                                        }
                                                                                      });
                                                                                В ресурсе №10 лежит список товаров, который вызывается
                                                                                [[!msCart?
                                                                                  &tpl=`toggleCart`
                                                                                ]]
                                                                                toggleCart:
                                                                                {foreach $products as $product}
                                                                                  <li class="cart__item">
                                                                                    <form class="cart__product ms2_form" id="dynamic-{$product.id}" method="post">
                                                                                      <img class="cart__thumb" src="{$product.image}" alt="{$product.pagetitle}">
                                                                                      <div class="cart__info">
                                                                                        <p class="cart__title">
                                                                                          {$product.article}
                                                                                        </p>
                                                                                        <span class="cart__price">
                                                                                          {$product.price}
                                                                                        </span>
                                                                                      </div>
                                                                                      <div class="cart__product-quantity">
                                                                                      </div>
                                                                                      <input type="hidden" name="id" value="{$product.id}">
                                                                                      <input type="hidden" name="key" value="{$product.key}">
                                                                                      [[!msDynamicCount?
                                                                                    		&id=`{$product.id}`
                                                                                    	]]
                                                                                    </form>
                                                                                  </li>
                                                                                {/foreach}
                                                                                таким образом получается следующее: при клике «положить в корзину» сколько бы то ни было раз товар в нужном количестве попадает в корзину. При открытии мини-корзины AJAX-ом делается запрос на ресурс №10, который сниппетом msCart по шаблону toggleCart формирует из корзины список товаров и их количество. Из toggleCart запускается сниппет msDynamicCount при изменении количества единиц товаров. Учитывая, что запросы выполняются AJAX'ом, возможно, не стоит ждать быстрой скорости реакции. В моем случае это 1-3 секунды при обновлении страницы. И даже в этом случае нет гарантии, что количество единиц товара будет изменено. Плюс, в инпут невозможно ввести свои показания: фокус очень быстро «уходит» с инпута(возможно ввести символы, но такое никуда не годится).
                                                                                Олег Захаров
                                                                                11 апреля 2022, 00:45
                                                                                0
                                                                                Демо не работает
                                                                                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                                  134