Динамическое обновление основной корзины
Добрый день! У меня к вам такой вопрос профессионалы, столкнулся с тем, что стандартного функционала корзины оказалось недостаточно. Дело в том что на странице корзины, у меня внизу выводятся еще каталог подарков, которые можно добавлять к в корзину к основным покупкам. Когда я щелкаю на добавление какого-то подарка, мини-корзина обновляется, а сама корзина не отображает нового подарка, который также был включен в корзину. Что можете посоветовать для решения этой проблемы? Как сделать динамичным код добавления товаров корзину. Пока у меня в чанке tpl.msCart.outer выглядит так это все:
<div id="msCart">
<table class="table table-striped">
<tr>
<th></th>
<th class="kv">Количество</th>
<th>Стоимость</th>
</tr>
[[+goods]]
</table>
<div class="promo"><span>У меня есть промокод <input type="text" /></span></div>
<p class="full-summ"><strong>Итого:</strong> <span class="ms2_total_count">[[+total_count]]</span> <span>штук</span> стоимостью на <span class="ms2_total_cost">[[+total_cost]]</span> <span>руб.</span></p>
<a class="back" href="[[++site_url]]">НАЗАд В КАТАЛОГ</a>
<a class="next-step" href="/index.php?id=7">Перейти к доставке</a>
<!--<form method="post">
<button class="btn btn-default" type="submit" name="ms2_action" value="cart/clean" title="[[%ms2_cart_clean]]"><i class="glyphicon glyphicon-remove"></i>[[%ms2_cart_clean]]</button>
</form>-->
</div>В данном случае я так понимаю, надо вызов [[+goods]] как-то обернуть в динамический вызов, как это делается с такими элементами, как [[+total_cost]] или [[+total_count]]. Комментарии: 6
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А если у меня задача другая, то…
И тут пришла мысль: а почему бы не перезагрузить корзину средствами JS при наступлении события?
А какое событие у нас наступает? Правильно — изменяется количество ВСЕГДА когда мы что-то делаем в корзине.
В общем берём файл по адресу
assets/components/minishop2/js/web/default.js
или его изменённую версию (если она у вас есть)
и ищем строки:
В этих строках написано: если количество меньше 1 (одного), то перезагрузить страницу.
Меняем на строки:
В этих строках написано: если адрес раздела сайта, в котором мы находимся, совпадает с /cart то перезагрузить страницу.
Полный адрес у меня выглядит так:
мой-сайт.ru/cart
Соответственно, если адрес
мой-сайт.ru/korzina
то новая строка будет выглядеть
Теперь после обновления количества хоть на мониторе мышкой, хоть на телефоне страница будет перезагружена и мы увидим её обновлённый вариант.
А если мы будем находиться на любой другой странице сайта, то условие не будет срабатывать и всё будет работать как и раньше.
Если у адреса после названия раздела есть «хвост» типа
мой-сайт.ru/korzina&что-то#еще-что-то
то смотрите в поисковике функцию Location JS
P.S. Совсем не программист, просто интересуюсь.
Надеюсь, что кому-то сэкономил время.
Посмотреть как работает можно здесь