msCartProduct

Рекомендуемые товары на странице с корзиной
Автор дополнения
Андрей Степаненко
Пакетов
27
Закачек
2 528
Обычно отвечает в течение суток
Автор дополнения
Пакетов
27
Закачек
2 528
Обычно отвечает в течение суток
Версия 1.0.4-pl
Дата выпуска 21.02.2019
Загрузки 14
Просмотры 639
Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
Компонент действуют как обертка для вывода товаров через сниппет msProducts для того чтобы можно было вывести дополнительные товары на страницу с корзиной и добавить их без перезагрузки страницы, с последующим обновлением корзины.
При попадании в корзину товар автоматически скрывается из списка, после того как все товары добавлены в корзину, скрывается и сама обертка где были эти товары.

P.S: компонент действует универсально, так как после добавлению в корзину из блока рекомендуем товары, корзина загружается через ajax и обновляет текущую. Так любые сниппеты, дополнительные опции, тв-параметры выводятся в списке с корзиной. Чего невозможно реализовать использую только один js

Возможности
  • Удаление товара из корзины с перемещение в блок рекомендуемые
  • При изменении количества, при условии что товаров 0 в корзине, товар аналогично перемещается в ремендуемые
  • После обновления окна браузера все товары добавенные в корзину там и остаются
  • Учет товаров добавленных в корзину из блока рекомендуемые, с возможностью скрыть уже добавленные и возращением их если нажали удалить из корзины
  • Возможность вывести свой дополнительный текст после того как все рекомендуемые товары чпопали в корзину

GIF


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


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


В сниппет обертку msCartProduct попадут результаты из снипита указанном в параметрах mscp_snippet.
По умолчанию вызывается сниппет minishop2 msProducts.

// Вывести все товары из категории ID 2
[[!msCartProduct?
    &parents=`2`
]]
// Вывести все товары с id 13,15,16
[[!msCartProduct?
    &resources=`13,15,16`
]]


tpl.CartProduct — обертка



Можно задать свой чанк обертку, для этого в плейсхолдере mscp_tpl указываем названия чанка с содержимым
По умолчанию чанк обертка tpl.CartProduct

<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>


Внимание!!! Чанк tpl для сниппета msCart (по умолчанию tpl.msCart) должен начинаться с:
<div id="msCart">
    КОРЗИНА СО СПИСКОМ ТОВАРОВ
</div>
так как данные грузятся непосредственно в этот ID, иначе корзина не будет грузится.


Доступные плейсхолдеры:


hide — передается для скрытия элементов в случаях если нету товаров в корзине или все сопутствующие товаров уже в корзине.
output — выводятся результаты сниппета переданного в параметрах mscp_snippet
show_empty — показывать блок с текстом или вашей логикой если все товары добавлены в корзину
product_ids — массив ключей и id товара

С помощью $product_ids — можно реализовать свою логику
{set $ids = implode(',', $product_ids)}
    {$ids} // 13,23,32 - вернет id товаров 
    
    {foreach $product_ids as $key => $product_id}
        <div>{$product_id}</div>
    {/foreach}


tpl.CartProduct.row — вывод товаров


В компонент входит свой сниппет для вывода товаров, по сути это тот же самый сниппет что и tpl.msProducts.row только с добавоенными классами:

Чтобы все работало необходимо в чанк с выводом товара прописать классы
mscartproduct — класс нужен для перебора элементов
mscartproduct_item_{$id} — уникальный класс для идентификации контейнера с товаром

<div class="row ms2_product mscartproduct mscartproduct_item_{$id}">
    <div class="col-md-2">
        {if $thumb?}
        <img src="{$thumb}" alt="{$pagetitle}" title="{$pagetitle}"/>
        {else}
        <img src="{'assets_url' | option}components/minishop2/img/web/ms2_small.png"
             srcset="{'assets_url' | option}components/minishop2/img/web/ms2_small@2x.png 2x"
             alt="{$pagetitle}" title="{$pagetitle}"/>
        {/if}
    </div>
    <div class="col-md-10">
        <form method="post" class="ms2_form">
            <a href="{$id | url}">{$pagetitle}</a>
            <span class="flags">
                {if $new?}
                    <i class="glyphicon glyphicon-flag" title="{'ms2_frontend_new' | lexicon}"></i>
                {/if}
                {if $popular?}
                    <i class="glyphicon glyphicon-star" title="{'ms2_frontend_popular' | lexicon}"></i>
                {/if}
                {if $favorite?}
                    <i class="glyphicon glyphicon-bookmark" title="{'ms2_frontend_favorite' | lexicon}"></i>
                {/if}
            </span>
            <span class="price">
                {$price} {'ms2_frontend_currency' | lexicon}
            </span>
            {if $old_price?}
            <span class="old_price">{$old_price} {'ms2_frontend_currency' | lexicon}</span>
            {/if}
            <button class="btn btn-default pull-right" type="submit" name="ms2_action" value="cart/add">
                <i class="glyphicon glyphicon-barcode"></i> {'ms2_frontend_add_to_cart' | lexicon}
            </button>
            <input type="hidden" name="id" value="{$id}">
            <input type="hidden" name="count" value="1">
            <input type="hidden" name="options" value="[]">
        </form>
        {if $introtext}
        <p>
            <small>{$introtext}</small>
        </p>
        {/if}
    </div>
</div>

msCartProductIds — id товаров


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

1.0.4-pl

  • Добавлена возможность отмены установки чанков

Последние обсуждения в сообществе MODX.pro