Динамическое обновление мини корзины.
Компонент msMiniCartDynamic для магазина miniShop2 даёт возможность изменять количество добавляемых товаров в корзину, как кнопками ±, так и ручным вводом количества в поле input. Также, при необходимости, есть возможность динамического изменения миникорзины. Далее подробно.
ps. Обновлено 07.07.2016г.
Установка 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>
- Удалить button name=«ms2_action»
- Удалить input name=«count»
- Добавить в форму идентификатор id=«dynamic-[[+id]]»:
<form method="post" id="dynamic-[[+id]]" class="ms2_form"> ... ... ... </form>
- Разместить не кэшированный вызов сниппета [[!msDynamicCount]], с обязательным параметром &id=[[+id]]
<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г.
Поблагодарить автора
Отправить деньги
Комментарии: 134
Неплохо бы из раздела "Готовые решения" перенести пост в раздел "Новые дополнения и их версии", раз уж это компонент.
Да, наверно — перенёс.
Здравствуйте!
Как сделать количество 1 по умолчанию?
Как сделать количество 1 по умолчанию?
Подставь «1» в плейсхолдер вместо «0», в чанке для недобавленых товаров.
Где это находится в msDynamicCount?
Вообще в плейсхолдере указать «1» будет неверно, так как в input указывается не сколько добавить, а сколько уже в корзине данного товара.
У компонента есть 2 чанка для вывода данных у товара (название не помню, так как пришлось искать другое решение): 1) для товаров которых еще нет в корзине, 2) для товаров которые уже в корзине. В них в input и указывается кол-во товаров, о котором вы и спрашиваете («Как сделать количество 1 по умолчанию?»).
У компонента есть 2 чанка для вывода данных у товара (название не помню, так как пришлось искать другое решение): 1) для товаров которых еще нет в корзине, 2) для товаров которые уже в корзине. В них в input и указывается кол-во товаров, о котором вы и спрашиваете («Как сделать количество 1 по умолчанию?»).
Вообще в плейсхолдере указать «1» будет неверно, так как в input указывается не сколько добавить, а сколько уже в корзине данного товара.Нет, немного не так.
При загрузке страницы, каждому товару подставляется кол-во, находящихся уже в корзине.
Но при этом никто не запрещает тут же изменять это количество. При следующей загрузке, это кол-во и отобразится.
А в остальном — да, не хорошо по умолчанию 1 указывать. Нажимая на "-" получаем ошибку добавления, нажимая на "+" — 2 товара в корзине.
Марат, здорово!
Я как раз искал решение подобной задачи.
Все работает. Но при добавлении товара вылетают 2 сообщения о добавлении joxi.ru/DrlOdW4uJeLJAP вместо одного, хотя товар добавляется один. Был бы рад если это получится решить, могу малость спонсировать.
Я как раз искал решение подобной задачи.
Все работает. Но при добавлении товара вылетают 2 сообщения о добавлении joxi.ru/DrlOdW4uJeLJAP вместо одного, хотя товар добавляется один. Был бы рад если это получится решить, могу малость спонсировать.
Какой броузер?
google chrome
Марат, а твоим дополнением можно ли вывести превью товара? если да то как? Подскажи пожалуйста.
В мини корзине? Пока нет.
Но мысль, добавить такую возможность, есть. +добавить возможность удалять отдельно взятый товар из мини-корзины.
Но мысль, добавить такую возможность, есть. +добавить возможность удалять отдельно взятый товар из мини-корзины.
По поводу удаления отдельного товара… получить бы ключ продукта ( [[+key]] ). К сожалению я на php из далека смотрю, давно хочу освоить, да вот никак не доберусь, а надо. В любом случае тебе спасибо за старания.
В сниппете msMiniCartDynamic, ключ товара в плейсхолдере — [[+key_d]]
Не появилось ли ещё превью товара в мини-корзине?)
Пока нет. Вечером постараюсь добавить, но не обещаю что сегодня.
Со временем беда.
Со временем беда.
Понимаю) Будет здорово!
Добавил картинку в мини-корзину, пакет в modstore — можно обновляться.
Очень круто! Спасибо большое! Чуть позже опробую!
Всё отлично работает! Спасибо, Марат! И, раз уж есть тег «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>
Это я его заменить на span забыл))
Добавлю в следующей версии.
Добавлю в следующей версии.
Добрый день.
Не работают кнопки +-.
Выделяет просто как текст. В чём может быть причина?
Не работают кнопки +-.
Выделяет просто как текст. В чём может быть причина?
Не знаю.
Есть где посмотреть?
Есть где посмотреть?
gorthour.temp.swtest.ru/kat/buket/
В форму надо добавить идентификатор id=«dynamic-[[+id]]»
И обнови пакет, сегодня новую версию выложил.
<form method="post" id="dynamic-[[+id]]" class="ms2_form">
...
...
</form>
Моя вина, пропустил в документации — исправлю.И обнови пакет, сегодня новую версию выложил.
Да, с добавлением этой строчки заработало, спасибо!
Добрый день! Странное поведение мини корзины на сайте. Использую msMiniCartDynamic в мини корзине в шапке сайта. Если сайт открывается в браузере первый раз (), то при добавлении товара в корзину не выводятся товары в msMiniCartDynamic. Стандартный функционал мини корзины Минишопа срабатывает, общее количество и стоимость показываются. После обновления страницы товары в msMiniCartDynamic показываются. В дальнейшем все начинает работать как положено, и товары попадают в msMiniCartDynamic без обновления страницы. После закрытия браузера все повторяется снова, открываешь браузер, и при добавлении товара в корзину msMiniCartDynamic не выводит товар.
Какая версия msMiniCartDynamic?
Скрипт подключен?
Скрипт подключен?
<script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
Версия 1.0.4-pl
Скрипт подключен
Скрипт подключен
Где можно посмотреть?
Отправил в личку.
У меня не получается воспроизвести — работает.
Проверил на двух разных браузерах. Тоже самое.
file.modx.pro/files/b/7/1/b718b5da52461bbcadf7186ed328e3a3.jpg
file.modx.pro/files/b/7/1/b718b5da52461bbcadf7186ed328e3a3.jpg
У тебя консоль ругается на
Попробуй закомментировать return false;
По поводу твоей ошибки можно почитать здесь.
return false;
e.preventDefault();
в файле function.js, строчки 112, 113Попробуй закомментировать return false;
По поводу твоей ошибки можно почитать здесь.
Спасибо, сделал, как Вы написали. Сейчас все ОК
Приветствую,
аналогичная проблема как описал Mихаил выше, при этом в консоль ошибок ни каких не падает.
На сайте подключен Sticky Plugin v1.0.3 for jQuery (jquery.sticky.js), при его отключении всё работает так как надо.
Из предупреждений, есть вот такое — Похоже, что этот сайт использует эффект позиционирования связанный с прокруткой. Это может не очень хорошо работать с асинхронным панорамированием; см. developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects чтобы получить более подробную информацию и присоединиться к обсуждению связанных с этим инструментов и возможностей!
аналогичная проблема как описал Mихаил выше, при этом в консоль ошибок ни каких не падает.
На сайте подключен Sticky Plugin v1.0.3 for jQuery (jquery.sticky.js), при его отключении всё работает так как надо.
Из предупреждений, есть вот такое — Похоже, что этот сайт использует эффект позиционирования связанный с прокруткой. Это может не очень хорошо работать с асинхронным панорамированием; см. developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects чтобы получить более подробную информацию и присоединиться к обсуждению связанных с этим инструментов и возможностей!
Подключил себе этот плагин v1.0.4, запозиционировал миникорзину — всё работает.
Ссылка есть на сайт?
Ссылка есть на сайт?
Отправил ссылку.
Используй для комментирования теги MODX
<!-- Вместо этих -->
[[- Эти ]]
Иначе два идентификатора на странице id=«mc-dynamic».
Оставил на странице, один mc-dynamic, проблема осталась. Как быть если нужно дважды подключить, на одной странице?
У Меня, к стати, эта ситуация так и не исправилась. Сейчас она на двух сайтах. Основной момент, это то, что миникорзина не срабатывает только в том случае, если сайт заново открыт в браузере и на нем после добавления товара в корзину не обновлялась страница. Если страницу обновить, или перейти на другую, то все потом хорошо работает. Можно удалять и добавлять товары в корзину. Миникорзина срабатывает корректно.
P.S На обоих сайтах один набор скриптов.
P.S На обоих сайтах один набор скриптов.
У тебя там конфликт с геолокацией. Попробуй его скрипт подключить после.
На втором сайте нет геолокации. Картина та же. Скину в личку адреса
Михаил, удалось ли решить проблему? У меня тоже самое — при первом заходе не обновляет ничего
Тоже словил такую проблему :) Решил кто нибудь?
Нет, пока я не решил.
Давайте ссылки на сайт — marat@marabar.ru
Отправил ссылки
В админку доступ по первой ссылке нужен.
Должен на почту прийти доступ.
В общем там у тебя какой то компонент не даёт записать в сессию, и не только msMiniCartDynamic-у, adminTools через раз, msRelated и мой только после обновления страницы, при условии наличия товара в корзине.
При этом msRelated пуст, отсюда и ошибки в логе.
Это именно компонент MODX? Или, какой-то из скриптов?
На обоих сайтах одинаковый набор скриптов — один шаблон.
И компонент наверное getRelated — а не msRelated. Правда на втором сайте он не стоит.
На обоих сайтах одинаковый набор скриптов — один шаблон.
И компонент наверное getRelated — а не msRelated. Правда на втором сайте он не стоит.
Не знаю. Там разбираться надо.
msRelated — это название массива в сессии и пишет его плагин с ID=7, и почему то он пуст.
msRelated — это название массива в сессии и пишет его плагин с ID=7, и почему то он пуст.
Слушай, чота вспомнилось: год назад, примерно, ко мне обращались с каким то конфликтом на сайте, и тогда, если мне память не изменяет, был трабл с class_key компонента SEO(чего то там). После его отключения встало всё на свои места.
Пробуй деактивировать их плагины поочерёдно, чистить кеш и проверять.
Возможно поможет.
Пробуй деактивировать их плагины поочерёдно, чистить кеш и проверять.
Возможно поможет.
Попробовал на тестовом сервере.
Деинсталировал все компоненты, кроме: miniShop2, mSearch2, pdoTools. Отключил все скрипты, оставил только:
Эфект тот-же!!!
Деинсталировал все компоненты, кроме: 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>
Отключил все лишние плагины.Эфект тот-же!!!
Сейчас должно быть всё нормально.
Пакет в modstore.
Пакет в modstore.
Да, после обновления все ОК. Спасибо!!!
Добрый день!
Пытаюсь вывести название товара в мини-корзине, однако на месте названия пусто, при добавлении нового или удалении уже имеющегося товара из корзины появляется [[+name_d]].
скрипт подключен, версия дополнения 1.0.4.
Цена, количество и сумма товара отображаются нормально.
Подскажите в чем может быть причина?
Пытаюсь вывести название товара в мини-корзине, однако на месте названия пусто, при добавлении нового или удалении уже имеющегося товара из корзины появляется [[+name_d]].
скрипт подключен, версия дополнения 1.0.4.
Цена, количество и сумма товара отображаются нормально.
Подскажите в чем может быть причина?
Трудно сказать — надо смотреть. Есть возможность?
выслал на почту
Можно обновиться, пакет в репозитории.
Спасибо! Все работает!
та же проблема, версия 1.0.5…
При добавлении в корзину появляется [[+name_d]], при обновлении страницы исчезает, но вместо нее не появляется название…
и кстати с парсером fenom дружит дополнение?
При добавлении в корзину появляется [[+name_d]], при обновлении страницы исчезает, но вместо нее не появляется название…
и кстати с парсером fenom дружит дополнение?
Поставил сюда всё самое свежее — http://s6446.h3.modhost.pro/index.php?id=4
Тоже появляется [[+name_d]]
Тоже появляется [[+name_d]]
Картинка должна быть сгенерирована
т.е. чтобы название появилось, нужна картинка?
Если нет картинки не нужно её указывать в чанках. Всё-равно ссылка на картинку будет битая, зачем?..
В следующей версии сделаю проверку.
В следующей версии сделаю проверку.
Т.е. если картинку убрать из чанков и сниппетов, должно появиться название?
(пробовал, не появилось)
(пробовал, не появилось)
Из каких сниппетов?
Нужно не указывать параметр &img в вызове снипета. По умолчанию сейчас пусто.
Ну и из чанков удалить плейсхолдеры [[+img_d]]
Сейчас обновление залью.
Нужно не указывать параметр &img в вызове снипета. По умолчанию сейчас пусто.
Ну и из чанков удалить плейсхолдеры [[+img_d]]
Сейчас обновление залью.
Спасибо.
Можно обновляться
Спасибо, вроде все работает как надо.
Здравствуйте Марат, у меня вопрос по сниппету msMinicartDynamic
У меня не обновляется корзина, после события положить в корзину, если обновить страницу все работает корректно.
С точки зрения удаление, необходимо добавить key товара в список, и все удаляется, а что бы добавить товар динамически, что нужно сделать?
Заранее спасибо за ответ, я пользуюсь версией 1.0.6
У меня не обновляется корзина, после события положить в корзину, если обновить страницу все работает корректно.
С точки зрения удаление, необходимо добавить key товара в список, и все удаляется, а что бы добавить товар динамически, что нужно сделать?
Заранее спасибо за ответ, я пользуюсь версией 1.0.6
Только собрался свой вопрос задать и меня опередили)
Мне вот не совсем понятно как реализовать кнопки ± в мини-корзине. Если прописать то же самое, что в tpl.msProducts.row, то всё работает, но id-шники задваиваются и второй клик по ± уже не срабатывает.
Как быть? может я пропустил что-то в документации?
Мне вот не совсем понятно как реализовать кнопки ± в мини-корзине. Если прописать то же самое, что в tpl.msProducts.row, то всё работает, но id-шники задваиваются и второй клик по ± уже не срабатывает.
Как быть? может я пропустил что-то в документации?
Ну если брать хронологически, да. Но суть вопроса у нас разные.
Вы задаете вопрос по msDynamicСount, а я по msMiniCartDynamic
У меня не обновляется миникорзина, после того как я положил товар)
А у Вас проблемы с Count в определенных местах магазина.
Вы задаете вопрос по msDynamicСount, а я по msMiniCartDynamic
У меня не обновляется миникорзина, после того как я положил товар)
А у Вас проблемы с Count в определенных местах магазина.
В мини корзине ± и небыли предусмотрены
А сколько будет стоить доработка компонента? в личку не достутачался…
мне нужно знать, можно ли доделать msMiniCartDynamic или где-то заказывать разработку нового.
мне нужно знать, можно ли доделать msMiniCartDynamic или где-то заказывать разработку нового.
Я в субботу буду на связи. А доработать можно — 3000 руб.
Хорошо, спасибо ) Согласую с заказчиком
Покажешь?
Это какому пользователю адресовано сообщение?
Тебе.
Итак на текущий момент у меня вот такая корзина, prntscr.com/cn1c1r
Общий сниппет msMiniCart
Общий сниппет 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>
Я забыл написать Minishop 2.4.2
Спасибо большое за помощь Марату. Оказалось решение проблемы добавить скрипт
<script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
Такая проблема. Все сделал по инструкции но при добавления товара пишет «Ошибка при изменении количества товара в корзине». Правил чанк tpl.msProducts.row. Происходит что то странное, сначала если выставить колл. 1 он добавит в корзину, потом может добавить 10 а потом пробую добавить другой товар пишет ошибку, он то добавляет то вовсе отказывается добавлять с ошибкой
просьба автору поправьте вот этот момент в сниппете
joxi.ru/D2P6LEMId7B56r
ато пользователи ловят глюки и мучаются в поиске что же не так.
Спасибо!
joxi.ru/D2P6LEMId7B56r
ато пользователи ловят глюки и мучаются в поиске что же не так.
Спасибо!
Блин. Спасибо!
Fix.
Fix.
Добрый день. Подскажите пожалуйста как вывести у товара выбранные опции?
Феном тут не срабатывает
Феном тут не срабатывает
{if $product.options?}
<div class="small">
{$product.options | join : '; '}
</div>
{/if}
Может через msOptions?
Вы меня наверно не так поняли. Мне нужно вывести все имеющиеся опции у товара. Мне нужно вывести только те опции, что добавились в заказ. С этим снипетом не получилось(
Здравствуйте. Помогите пожалуйста решить вопрос с опциями.
[[msOptions?
&options=`color,size`
&tpl=``
]]
Этот код тут не подходит. Мне нужно вывести только те опции с которыми товар был добавлен в корзину. Как это сделать?
Пока никак.
На следующей неделе добавлю такую возможность.
На следующей неделе добавлю такую возможность.
О! Огромное спасибо буду ждать обновления!)
Мне тут подсказалаи, что вот так можно сделать:
Изменения в 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]] выводятся все опции через ;
Если все гуд, внесете в компонент?
Да, было бы неплохо вынести в мини-корзину старую цену.
Добавил ваши строки себе, но пока вообще ничего не выводит. Как-то можно из options вытащить только old_price?
Пробовал заменить
Добавил ваши строки себе, но пока вообще ничего не выводит. Как-то можно из options вытащить только old_price?
Пробовал заменить
'options_d' => implode(';',$v['options']),
на'old_price_d' => $v['old_price'],
Но в миникорзине выводится просто плейсхолдер [[+old_price_d]] прямо со скобками
Где посмотреть пример tpl и tplOuter?
Добавление ± к товарам каталога позволит сделать такой функционал как в этом товаре на примере дополнительных модулей?
Не пойму, по какому принципу, компонент осуществляет сортировку при выводе изображения в [[+img_d]]. Есть ли возможность выводить строго первое, по порядку из галереи?
У меня при стандартной разметки, вместо изображения товара ничего не выводит.
Скажите, как сделать, чтобы товар только по кнопке В КОРЗИНУ в нее уходил, а не при изменении количества...?
Всех приветствую.
Не совсем понятно что нужно указать в "&img =" что бы появились картинки.
Помогите разобраться.
Не совсем понятно что нужно указать в "&img =" что бы появились картинки.
Помогите разобраться.
Я вот тоже думал, но так и не понял. Пока применил такой костыль, указав в шаблоне обертки такую ссылку у изображения:
Минус в том, что нужно обязательно для каждого товара указывать название картинки одинаково.
/assets/images/products/[[+id_d]]/small/img-product.jpg
Минус в том, что нужно обязательно для каждого товара указывать название картинки одинаково.
В последней версии Minishop были изменения с превью изображений.
Теперь в данном сниппете необходимо указывать то, что указано в источнике файлов -> MS2 Images -> thumbnails (по ум. 'small')
[[!msMiniCartDynamic?
&img = `small`
]]
Теперь в данном сниппете необходимо указывать то, что указано в источнике файлов -> MS2 Images -> thumbnails (по ум. 'small')
[[!msMiniCartDynamic?
&img = `small`
]]
Добрый день! При нажатии «добавить в корзину» Пишет: Ошибка добавления в корзину: неверное количество «0».
«1» в плейсхолдер вместо «0», в чанке для недобавленых товаров — исполнил, но товар добавляется по-прежнему только через +
Подскажите, плз., в чем тут дело?
«1» в плейсхолдер вместо «0», в чанке для недобавленых товаров — исполнил, но товар добавляется по-прежнему только через +
Подскажите, плз., в чем тут дело?
А у меня что-то удивительное происходит)))
Беру стандартный минишоповский чанк, удаляю все по инструкции, дописываю скрипт. После нажатия на + (или кнопку добавить ранее) динамически появляется такая конструкция на месте корзины:
Ну или такая. После обновления страницы все на месте уже :)
Обновила страницу и оп:
<img src="" />
Беру стандартный минишоповский чанк, удаляю все по инструкции, дописываю скрипт. После нажатия на + (или кнопку добавить ранее) динамически появляется такая конструкция на месте корзины:
Ну или такая. После обновления страницы все на месте уже :)
Обновила страницу и оп:
<img src="" />
Все, это не лыжи виноваты, а я не удалила второй вызов, в итоге вместо msMiniCart вызывала msMiniCartDynamic, получилось он сам себя звал, а аякс не обрабатывал параметры :)
Привет! у меня два вопроса:
1. в миникорзине будет ли работать изменение количества?
2. почему-то у меня добавляется не основное фото товара, а последнее, как быть?
1. в миникорзине будет ли работать изменение количества?
2. почему-то у меня добавляется не основное фото товара, а последнее, как быть?
Привет.
1. Попробуй добавить в миникорзину содержимое чанка msDynamicCountChange, по идее должно работать — я не проверял.
2. Выше не подходит решение? Я не тестировал ещё с новой версией miniShop2 — ничего не могу сказать. В планах, в апреле, есть желание переписать компонент.
1. Попробуй добавить в миникорзину содержимое чанка msDynamicCountChange, по идее должно работать — я не проверял.
2. Выше не подходит решение? Я не тестировал ещё с новой версией miniShop2 — ничего не могу сказать. В планах, в апреле, есть желание переписать компонент.
1. добавил просто форму из обычной корзины. Срабатывает, но нужно дописать триггер клик на скрытую кнопочку «cart/refresh»
2. перегенерировал превьюшки, все наладилось. У них при импорте у всех rank = 0 почему-то был
2. перегенерировал превьюшки, все наладилось. У них при импорте у всех rank = 0 почему-то был
Здравствуйте! Подскажите пожалуйста, появилась ли возможность выводить опции товара?
Доброго времени суток. Столкнулся с такой проблемой, итоговая сумма заказа не обновляется динамически. Такой функционал вообще есть в данном компоненте? в документации указан плейсхолдер только [[+sum_d]] — Сумма товара, но не итоговая сумма заказа.
Может кто подскажет как забороть сию неприятность?
PS. И насколько я понял, вывод опций (именно тех опций, с которыми товар улетел в корзину, а не всех вообще) товара так и не реализован?
Может кто подскажет как забороть сию неприятность?
PS. И насколько я понял, вывод опций (именно тех опций, с которыми товар улетел в корзину, а не всех вообще) товара так и не реализован?
Вопрос по поводу динамического изменения суммы снимаю. Была ошибка в определении класса для блока, где выводится сумма.
По поводу опций вопрос пока остается открытым.
По поводу опций вопрос пока остается открытым.
Мне хотелось, уточнить. Кто-нибудь разобрался(сталкивался) с выводом плейсхолдера old_price Есть вопрос в сообщесте, но ответа нет. Хотелось разобраться в данном вопросе.
Добрый день!
Подскажите, пожалуйста! Можно ли реализовать изменение цены в зависимости веса данным компонентом?
Подскажите, пожалуйста! Можно ли реализовать изменение цены в зависимости веса данным компонентом?
Здравствуйте, у меня проявилась уже описанная ранее проблема — если первый раз добавить товар в корзину, сообщение о добавлении появляется, но корзина не обновляется, после обновления страницы все становится нормально, вроде всё что может повлиять на фронтэнд отключал, эффекта нет…
Подскажите пожалуйста в какую сторону копать…
Подскажите пожалуйста в какую сторону копать…
Всунуть куда-то в код шаблона вот это
UPD. Читайте внимательно описание компонента, там этот момент указан. Видимо по каким-то причинам автоматическая подгрузка скрипта не была реализована.
<script src="/assets/components/msminicartdynamic/js/web/msminicartdynamic.js"></script>
И миникорзина должна обновляться как положено.UPD. Читайте внимательно описание компонента, там этот момент указан. Видимо по каким-то причинам автоматическая подгрузка скрипта не была реализована.
Так добавлен.
Предполагаю что это из-за того что у меня фактически 2 вызова — на десктопную и мобильную версию, в зависимости от версии 1 display:none. Пробовал через jquery добавлять
Как их тогда развести если 1 вызов мне нужен в header а 2 в footer…
Предполагаю что это из-за того что у меня фактически 2 вызова — на десктопную и мобильную версию, в зависимости от версии 1 display:none. Пробовал через jquery добавлять
[[!msMiniCart]]
но он добавляется статично и так же обрабатывается после обновления страницы…Как их тогда развести если 1 вызов мне нужен в header а 2 в footer…
На счет двух вызовов не знаю, не сталкивался. Вам подойдет для разделения на десктоп и мобильный дополнение mobileDetect.
Еще, если мне не изменяет память, дополнение msMinicartDynamic не пересчитывает динамически полную сумму корзины, поэтому я для пересчета итоговой суммы оставил логику стандартной корзины. Вот код как у меня выглядит миникорзина.
Еще, если мне не изменяет память, дополнение 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>
Скорее всего вы что-то не правильно сделали. Попробуйте сделать точно по документации. Прямо один в один.
Добрый день. А вы не могли бы показать чанки
И на странице товара не всегда автоматически обновляется.
Он как то не стабильно работает, то все отлично, то через раз.
Спасибо!
'tplOuter' => 'minicartModalOuter.tpl',
'tpl' => 'minicartModalRow.tpl',
И сталкивались вы стакой проблемой — не всегда обновляется в миникарзине аяксом.И на странице товара не всегда автоматически обновляется.
Он как то не стабильно работает, то все отлично, то через раз.
Спасибо!
Проблему решил, было 2 вызова миникорзины, пришлось от одного отказаться.
Появился новый вопрос с выводом опций
Появился новый вопрос с выводом опций
Подскажите пожалуйста, можно ли как то вывести артикул [[+article]] в msMinicartDynamic?
Доброго дня всем, у меня не работает кнопка удалить товар. Кто может подсказать в чем проблема?
проверь все классы по выводу, все работает
Подскажите, как fenom заставить работать?
И работают ли модификаторы в плейсхолдерах? т.к. так ничего не выводит!
И работают ли модификаторы в плейсхолдерах? т.к. так ничего не выводит!
[[+img_d:isnotempty=`<a href="[[~[[+id_d]]]]"><img src="[[+img_d]]" alt="[[+name_d]]" /></a>`]]
С тегами fenom проблема при обновлении страницы {$img_d}
они не работают, скажите, что делаю не так?
они не работают, скажите, что делаю не так?
Забыли в сниппите $pdo = $modx->getService('pdoFetch'); и $pdo->getChunk
В самой миникорзине сделал чтобы работало кол-во
вот код чанка msMinicartDynamic
вот код чанка 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>
Когда добавляю товар в корзину появляется jgrowl-попап об успешном добавлении товара в корзину, а счетчик товара прибавляет один товар и сразу же отнимает. Чтобы добавить единицу товара в корзину нужно нажать 1-3 раза по плюсу. Если после нажатия на плюс сразу перейти в корзину — товар добавляется, иначе — возможно да, а может и нет. Что-то мешает, причем каждый раз необходимо разное количество попыток чтобы увеличить количество товара.
Кто-нибудь знает где примерно искать причину или может сталкивался с подобным?
Кто-нибудь знает где примерно искать причину или может сталкивался с подобным?
мини-корзина открывается по клику:
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 секунды при обновлении страницы. И даже в этом случае нет гарантии, что количество единиц товара будет изменено. Плюс, в инпут невозможно ввести свои показания: фокус очень быстро «уходит» с инпута(возможно ввести символы, но такое никуда не годится).
Демо не работает
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.