new

msGiftCart

Управление подарками
Автор дополнения
Boshnik
Пакетов
17
Закачек
3 406
Автор дополнения
Пакетов
17
Закачек
3 406
Обычно отвечает в течение суток
Версия 1.0.0-pl
Дата выпуска 18.11.2021
Загрузки 3
Просмотры 150
Внимание, этот компонент требует версию PHP 7.2 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.8 !
Компонент позволяет добавлять в корзину подарки. Подарки могут быть как товарами так и кастомными объектами.

Как добавить подарок?



Шаг 1. Создаем правило.
Здесь все просто. Указываем название и дату, когда данное правило будет действительно на сайте.


Шаг 2. Добавляем условие для корзины.


Общие условия:
  • Цена корзины. Например, показываем подарки при заказе на сумму 1000 руб. и более.
  • Кол-во товаров. Учитывается общее кол-во всех товаров.
  • Кол-во разных товаров. Учитывается кол-во уникальных товаров.

Условия по товарам:


Группа пользователей. Позволяет дарить подарки только определенной группе пользователей или всем.
  • Модель. Доступно: товар магазина, категория товаров, производитель и опции товара.
  • Товар магазина. Это поле динамическое и зависит от выбранной модели.
  • Кол-во. Минимальное кол-во совпадений по условию, для товара — это его кол-во. В примерах более подробно разберем это поле.

Дополнительное условие:
  • Поле объекта Зависит от выбранной модели.
  • Условие. Равно, не равно и т.д
  • Значение. С чем будем сравнивать.
  • Применить ко всем товарам. По умолчанию условие проверяется столько, сколько указано в поле Кол-во, а если поставить галочку, то условие будет проверять каждый товар в корзине.


Шаг 3. Выбираем подарки


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


Подарок-скидка


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


Выводим подарки в корзине


Для вывода подарков используем сниппет msGiftCart вместо сниппета msCart. Принимает все параметры, что и сниппет msCart и еще один свой:
tplOuter:
@INLINE <div id="msGiftCart">{$wrapper}</div>


В чанке доступны переменные:
  • total — массив итоговых значений корзины, в котором:
    • count — количество товаров
    • gift — количество подарков
    • weight — общий вес товаров
    • cost — стоимость товаров
    • discount — общая скида
    • positions — кол-во уникальных товаров
  • products — массив товаров корзины
  • rule — массив правила
  • gifts — массив доступных подарков

Переменная rule

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

Примеры:
{if $total['cost'] < $rule['total_cost_min']}
    <div class="alert alert-info" role="alert">
        При заказе выше {$rule['total_cost_min']} руб. Вы получите подарок. Вам осталось скупиться на {$rule['total_cost_min'] - $total['cost']} руб.
    </div>
{/if}


{if $rule['gifts']}
<p>Подарки, которые вы можете забрать:</p>
<ul class="list-group">
    {foreach $rule['gifts'] as $gift}
        <li class="list-group-item">{$gift.pagetitle}</li>
    {/foreach}
</ul>
{/if}


Условие по общему количеству товаров:
{if $total['count'] < $rule['total_count']}
    <div class="alert alert-info" role="alert">
        Вы можете получить подарок только, если закажите {$rule['total_count']} товаров. Осталось: {$rule['total_count'] -  $total['count']}
    </div>
{/if}


Условие по количеству уникальных товаров:
{if $total['positions'] < $rule['total_positions']}
    <div class="alert alert-info" role="alert">
        Вы можете получить подарок только, если закажите {$rule['total_positions']} разных товаров. Осталось: {$rule['total_positions'] - $total['positions']}
    </div>
{/if}


Переменная gifts

Массив все подарков. Для оформления можно использовать стандартный чанк минишопа tpl.msProducts.row, но обязательно добавить в форму поле:
<input type="hidden" name="options[gift_type]" value="{$gift_type}">

Например:
<div class="row">
    {foreach $gifts as $gift}
        {$_modx->getChunk('tpl.msProducts.row', $gift)}
    {/foreach}
</div>


Выводим подарки в заказе


Используем сниппет msGetOrderGifts
{'!msGetOrderGifts' | snippet: [
    'order_id' => $order.id
    'tpl' => '@FILE chunks/ms2/orders/product.tpl',
]}

Этим сниппетом, можно вывести и подарки на почте.

Заказы


В заказе подарки отображаются в отдельной вкладке. Соответсвенно, можно добавить подарки к заказу уже после оформления заказа.