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

Добрый день! У меня к вам такой вопрос профессионалы, столкнулся с тем, что стандартного функционала корзины оказалось недостаточно. Дело в том что на странице корзины, у меня внизу выводятся еще каталог подарков, которые можно добавлять к в корзину к основным покупкам. Когда я щелкаю на добавление какого-то подарка, мини-корзина обновляется, а сама корзина не отображает нового подарка, который также был включен в корзину. Что можете посоветовать для решения этой проблемы? Как сделать динамичным код добавления товаров корзину. Пока у меня в чанке 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]].
Андрей
03 октября 2014, 07:40
modx.pro
1
4 435
+1

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

Володя
03 октября 2014, 13:23
0
Отлавливаете плагином событие добавления в корзинку, набиваете tpl.msCart.row, возвращаете обработанный результат и добавляете на страницу…
    dapin
    05 февраля 2015, 11:19
    0
    А можно поподробнее, как происходит этот процесс?
    Павел Левин
    04 октября 2014, 18:38
    0
    Я так понял, дело происходит в самой корзине и на мой взгляд, самый легкий вариант это повесить событие обновления страницы на клик «добавить в корзину», именно к товарам, которые в самой корзине.
      Станислав
      28 апреля 2015, 19:51
      0
      Не подскажите как запрограммировать данный вариант решения проблемы? Есть в шапке малая корзина со списком товаров. Задача: обновлять этот список при добавлении товара в корзину, т.к. сейчас он обновляется только при обновлении всей страницы.
      Роман Танаев
      10 октября 2014, 14:26
      +1
      Возможно вам поможет мое решение modx.pro/solutions/3942-dynamic-update-of-the-basic-basket/
        Mr.Prop
        09 сентября 2019, 01:46
        0
        Искал ответ почти неделю. Прошерстил весь сайт вдоль и поперёк. Пробовал переопределить класс корзины и ещё кучу вариантов с сайта. Очень много вариантов и все решают какую-то задачу вместе с обновлением корзины.
        А если у меня задача другая, то…
        И тут пришла мысль: а почему бы не перезагрузить корзину средствами JS при наступлении события?
        А какое событие у нас наступает? Правильно — изменяется количество ВСЕГДА когда мы что-то делаем в корзине.
        В общем берём файл по адресу
        assets/components/minishop2/js/web/default.js
        или его изменённую версию (если она у вас есть)
        и ищем строки:
        if (status['total_count'] < 1) {
            location.reload();
        }
        В этих строках написано: если количество меньше 1 (одного), то перезагрузить страницу.

        Меняем на строки:
        if(window.location.pathname == "/cart"){
           location.reload();
        }
        В этих строках написано: если адрес раздела сайта, в котором мы находимся, совпадает с /cart то перезагрузить страницу.

        Полный адрес у меня выглядит так:
        мой-сайт.ru/cart

        Соответственно, если адрес
        мой-сайт.ru/korzina
        то новая строка будет выглядеть
        if(window.location.pathname == "/korzina"){
           location.reload();
        }
        Теперь после обновления количества хоть на мониторе мышкой, хоть на телефоне страница будет перезагружена и мы увидим её обновлённый вариант.
        А если мы будем находиться на любой другой странице сайта, то условие не будет срабатывать и всё будет работать как и раньше.

        Если у адреса после названия раздела есть «хвост» типа
        мой-сайт.ru/korzina&что-то#еще-что-то
        то смотрите в поисковике функцию Location JS

        P.S. Совсем не программист, просто интересуюсь.
        Надеюсь, что кому-то сэкономил время.
        Посмотреть как работает можно здесь
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6