msCartProduct - Добавляет товар на странице с корзиной и обновляет её
Компонент действуют как обертка для вывода товаров через сниппет msProducts для того чтобы можно было вывести дополнительные товары на страницу с корзиной и добавить их без перезагрузки страницы, с последующим обновлением корзины.
При попадании в корзину товар автоматически скрывается из списка, после того как все товары добавлены в корзину, скрывается и сама обертка где были эти товары.
Пояснение к компоненту
По умолчанию нельзя вывести товары на страницу с корзиной, так как при их добавлении в корзину, список товаров в корзине не измениться!
Необходимо вызвать сниппет msCartProductDrive вместо msCart чтобы запомнить параметры передаваемые в msCart. И в нужном нам месте вызываем msCartProduct к примеру с товарами из категории с id 13
если в сниппете msCartProduct указать show_empty, то обертка не будет скрыта, вместо этого после того как все дополнительные товары будут добавлены в корзину, появится блок с классом mscartproduct_container_empty
В обертку помимо результатов сниппета msProducts также передается список товаров добавленных в корзину в плейсхолдере product_ids. Так что можно реализовывать какую угодно логику (например вывести список категорий этих товаров).
Сниппет нужен для получения id товаров добавленных в корзину. С помощью него можно вывести какие то связанные товары между собою
Демо версия
http://mscp.bustep.ru
Купить компонент
https://modstore.pro/packages/integration/mscartproduct
Еще немного пояснений:
— При удалении из корзины товар перемещается обратно в блок рекомендуемые
— При изменения количества товара на 0, товар перемещается в корзину (надо понимать что это два разных события в minishop2 удаление и изменение количества действую по разному)
— На чистом JS невозможно реализовать то что делает этот компонент. Так как в списке товаров добавленных в корзину могут присутствовать какие то сниппеты, дополнительно выведенные тв параметры или опции, что может отсутствовать в товаре из блока рекомендуемые.
Пример: в списке товаров добавленных в корзину в чанк добавляем поле [[+tv.count]] который допустим отображает количество остатков этого товара.
В блоке рекомендуемые в чанке мы по каким то причинам не вывели [[+tv.count]].
Получается если использовать обычный JS вам просто неоткуда будет взять это поле [[+tv.count]]
если вы только заранее не добавить [[+tv.count]] в чанк который используется в рекомендуемых товарах. Но для этого вам придется писать какой то обработчик js который правильно потом запихает это поле.
Компонент получает всю корзину целиком через ajax и заменяет текущую корзину на новую.
Возможности
При попадании в корзину товар автоматически скрывается из списка, после того как все товары добавлены в корзину, скрывается и сама обертка где были эти товары.
Пояснение к компоненту
По умолчанию нельзя вывести товары на страницу с корзиной, так как при их добавлении в корзину, список товаров в корзине не измениться!
Быстрый старт
Необходимо вызвать сниппет 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 в корзине, товар аналогично перемещается в ремендуемые
- После обновления окна браузера все товары добавенные в корзину там и остаются
- Учет товаров добавленных в корзину из блока рекомендуемые, с возможностью скрыть уже добавленных и возвращением их если нажали удалить из корзины
- Возможность вывести свой дополнительный текст после того как все рекомендуемые товары чпопали в корзину
Поблагодарить автора
Отправить деньги
Комментарии: 6
Андрей, ты решил написать готовые решения для всех костылей которые пишут остальные разработчики чуть ли не в каждом проекте? Респект тебе)
- Удаление товара из корзины с перемещение в блок рекомендуемые
- При изменении количества, при условии что товаров 0 в корзине, товар аналогично перемещается в ремендуемые
- После обновления окна браузера все товары добавенные в корзину там и остаются
- Учет товаров добавленных в корзину из блока рекомендуемые, с возможностью скрыть уже добавленных и возвращением их если нажали удалить из корзины
- Возможность вывести свой дополнительный текст после того как все рекомендуемые товары чпопали в корзину
Не всем удаётся писать костыли))
Так я же наоборот не против, я только за, мне и клиенту легче заплатить за готовое решение, чем тратить свое время
Тут кстати немного больше возможностей чем при написании костылей))
Есть возможность вывести рекомендованные товары в зависимости от связей товара?
А будет ли данный компонент работать с новой версией minishop2 (от версии 4.0.0)?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.