msCartProduct - Добавляет товар на странице с корзиной и обновляет её

Компонент действуют как обертка для вывода товаров через сниппет msProducts для того чтобы можно было вывести дополнительные товары на страницу с корзиной и добавить их без перезагрузки страницы, с последующим обновлением корзины.
При попадании в корзину товар автоматически скрывается из списка, после того как все товары добавлены в корзину, скрывается и сама обертка где были эти товары.




Пояснение к компоненту
По умолчанию нельзя вывести товары на страницу с корзиной, так как при их добавлении в корзину, список товаров в корзине не измениться!


Быстрый старт


Необходимо вызвать сниппет msCartProductDrive вместо msCart чтобы запомнить параметры передаваемые в msCart. И в нужном нам месте вызываем msCartProduct к примеру с товарами из категории с id 13
// Заменяем на странице с корзиной  {$modx->runSnippet('msCart')} на 
{$modx->runSnippet('msCartProductDrive')}
{$modx->runSnippet('msCartProduct',[
    'parents' => '13'
])}

Показывать контейнер


если в сниппете msCartProduct указать show_empty, то обертка не будет скрыта, вместо этого после того как все дополнительные товары будут добавлены в корзину, появится блок с классом mscartproduct_container_empty
<div id="msCartProduct">
    <div class="mscartproduct_container {if $hide}mscartproduct_container_hide{/if}{if $show_empty} mscartproduct_container_all_show{/if}" >
        <div>
            <h3>{'mscartproduct_title' | lexicon}</h3>
        </div>
        {$output}
        {if $show_empty}
            <div class="mscartproduct_container_empty">
                Выбрать еще <a href="{29|url}">аксесуары</a>
            </div>
        {/if}
    </div>
</div>

Cвоя логика


В обертку помимо результатов сниппета msProducts также передается список товаров добавленных в корзину в плейсхолдере product_ids. Так что можно реализовывать какую угодно логику (например вывести список категорий этих товаров).

msCartProductIds — id товаров добавленных в корзину


Сниппет нужен для получения id товаров добавленных в корзину. С помощью него можно вывести какие то связанные товары между собою
// Вернет: 37,38,91
[[!msCartProductIds]]

Демо версия
http://mscp.bustep.ru

Купить компонент
https://modstore.pro/packages/integration/mscartproduct

Обновление от 19.02.2019



Еще немного пояснений:
— При удалении из корзины товар перемещается обратно в блок рекомендуемые
— При изменения количества товара на 0, товар перемещается в корзину (надо понимать что это два разных события в minishop2 удаление и изменение количества действую по разному)
— На чистом JS невозможно реализовать то что делает этот компонент. Так как в списке товаров добавленных в корзину могут присутствовать какие то сниппеты, дополнительно выведенные тв параметры или опции, что может отсутствовать в товаре из блока рекомендуемые.

Пример: в списке товаров добавленных в корзину в чанк добавляем поле [[+tv.count]] который допустим отображает количество остатков этого товара.
В блоке рекомендуемые в чанке мы по каким то причинам не вывели [[+tv.count]].
Получается если использовать обычный JS вам просто неоткуда будет взять это поле [[+tv.count]]

если вы только заранее не добавить [[+tv.count]] в чанк который используется в рекомендуемых товарах. Но для этого вам придется писать какой то обработчик js который правильно потом запихает это поле.

Компонент получает всю корзину целиком через ajax и заменяет текущую корзину на новую.

Возможности
  • Удаление товара из корзины с перемещение в блок рекомендуемые
  • При изменении количества, при условии что товаров 0 в корзине, товар аналогично перемещается в ремендуемые
  • После обновления окна браузера все товары добавенные в корзину там и остаются
  • Учет товаров добавленных в корзину из блока рекомендуемые, с возможностью скрыть уже добавленных и возвращением их если нажали удалить из корзины
  • Возможность вывести свой дополнительный текст после того как все рекомендуемые товары чпопали в корзину
Андрей Степаненко
17 февраля 2019, 11:24
modx.pro
2
1 305
+5
Поблагодарить автора Отправить деньги

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

Pavel Zarubin
18 февраля 2019, 16:47
+2
Андрей, ты решил написать готовые решения для всех костылей которые пишут остальные разработчики чуть ли не в каждом проекте? Респект тебе)
    Андрей Степаненко
    19 февраля 2019, 09:51
    +1
    Не всем удаётся писать костыли))
      Pavel Zarubin
      19 февраля 2019, 16:54
      +1
      Так я же наоборот не против, я только за, мне и клиенту легче заплатить за готовое решение, чем тратить свое время
      Андрей Степаненко
      19 февраля 2019, 16:37
      +1
      Тут кстати немного больше возможностей чем при написании костылей))
      • Удаление товара из корзины с перемещение в блок рекомендуемые
      • При изменении количества, при условии что товаров 0 в корзине, товар аналогично перемещается в ремендуемые
      • После обновления окна браузера все товары добавенные в корзину там и остаются
      • Учет товаров добавленных в корзину из блока рекомендуемые, с возможностью скрыть уже добавленных и возвращением их если нажали удалить из корзины
      • Возможность вывести свой дополнительный текст после того как все рекомендуемые товары чпопали в корзину
      Фарит
      Фарит
      06 января 2020, 19:15
      0
      Есть возможность вывести рекомендованные товары в зависимости от связей товара?
        alex
        07 мая 2023, 17:29
        0
        А будет ли данный компонент работать с новой версией minishop2 (от версии 4.0.0)?
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6