Автор дополнения
Павел
Пакетов
16
Закачек
4 950
Автор дополнения
Пакетов
16
Закачек
4 950
Версия 1.3.9-beta
Дата выпуска 23.06.2017
Загрузки 366
Просмотры 778
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !

Особенности:

  • Полная AJAX обработка применения/удаления купона к заказу.
  • Промо-код можно добавить не только с основной страницы бекенда. На странице товара также есть вкладка «Промо-коды», при добавлении кода из которой текущий товар сразу привяжется к этому промо-коду. Это очень удобно, когда надо добавить купон только для одного товара.
  • Если к купону не привязано ни одного товара или раздела — купон действует на весь магазин.
  • Скидку можно указать, как для купона в целом, так и для товара или раздела, привязанного к купону. При этом, чем индивидуальнее будет указана скидка, тем она первостепеннее будет восприниматься компонентом. К примеру, у нас есть купон со скидкой 20%, есть Раздел 1, привязанный к этому купону, со скидкой 80% и есть товар лежащий в Разделе 1, привязанный к этому купону, со скидкой 40%. Для данного товара скидка будет 40%.
  • При отправке заказа, ровно как и при открытии страницы со сниппетом [[!mspcForm]], компонент проверяет, действителен ли ещё купон. Если нет, то сообщает об этом юзеру, удаляет купон из формы и обновляет цены. Это делает невозможным воспользоваться купоном:
    а) который был отключён,
    б) время действия которого завершилось,
    в) количество которого закончилось.
  • Если заказ был оформлен с промо-кодом, то в бекенде в модальном окне заказа вверху на первой вкладке появится промо-код и сумма скидки.
  • JS на странице вызова сниппета [[!mspcForm]] вызывается в конце страницы для того, чтобы ваши колбеки miniShop2, которые могут пересекаться с используемыми в пакете, были клонированы и успешно выполнены.


Демо-сайт msPromoCode

Для промо-кода можно указать:

  • Код купона. Также его можно сгенерировать встроенным инструментом, указав нечто вроде регулярки:
    /([a-zA-Z0-9]{4-10})-([A-Z]{4})/
  • Скидку. Как в процентах, так и фиксированную, которая будет применена для каждого товара привязанного к купону.
  • Количество. Это позволит ограничить кол-во оформленных заказов с данным купоном. Необязательно.
  • Дату начала и окончания. Необязательно.
  • Привязать список товаров/разделов, которые будут участвовать в промо-акции. Если не указать — будет действовать на весь магазин.

Начать пользоваться пакетом очень просто:

  1. После установки нужно зайти либо на страницу компонента, либо на страницу товара, к которому хотим привязать купон и выбрать вкладку "Промо-коды". Создать промо-код заполнив минимум 2 поля.
  2. На странице вызова сниппета [[!msCart]] вызвать сниппет [[!mspcForm]]. Можно несколько раз, например: перед и после корзины.
  3. Чтобы цена, при применении купона в корзине, для каждого товара менялась динамически, надо сделать действия описанные ниже.

Рецепты:

  • Динамическая смена цены на товар в корзине, после применения купона:
    • miniShop2 версии 2.4 и выше:
      1. Продублировать чанк tpl.msCart и указать его в параметр &tpl в сниппете [[!msCart]].
      2. В этом чанке, вызов цены обрамить в селектор span.price span. То бишь, вместо:
        <span>{$product.price}</span> {'ms2_frontend_currency' | lexicon}
        такой код:
        <span class="price"><span>{$product.price}</span> {'ms2_frontend_currency' | lexicon}</span>
      3. Чуть ниже вызов старой (зачёркнутой) цены обрамить в селектор span.old_price span.

        Вместо:
        {if $product.old_price?}
        <span class="old_price">{$product.old_price} {'ms2_frontend_currency' | lexicon}
        {/if}
        пишем это:
        <span class="old_price" style="{if !$product.old_price}display:none;{/if}"><span>{$product.old_price}</span> {'ms2_frontend_currency' | lexicon}</span>
    • miniShop2 версии 2.2 и ниже:
      1. Продублировать чанк tpl.msCart.row и указать его в параметр &tplRow в сниппете [[!msCart]].
      2. В этом чанке, вызов цены обрамить в селектор span.price span:
        <span class="price"><span>[[+price]]</span> [[%ms2_frontend_currency]]</span>[[+old_price]]
      3. В быстрый плейсхолдер old_price (это то, что в чанке tpl.msCart.row в самом низу) вызов старой (зачёркнутой) цены обрамить в селектор span.old_price span:
        <!--minishop2_old_price 
        <span class="old_price"><span>[[+old_price]]</span> [[%ms2_frontend_currency]]</span>-->
  • Можно вывести скидку по промо-коду в любом месте страницы, где вызывается сниппет [[!mspcForm]], используя конструкцию типа:
    <div class="mspc_discount_amount" style="display: none;">Скидка по промо-коду: <span>0</span> [[%ms2_frontend_currency]]</div>
    Обратите внимание, для вывода и обновления суммы скидки используется селектор "span.mspc_discount_amount span". Именно туда записывается сумма скидки без указания валюты.


Важно:

  • Чанк пакета завязан на Bootstrap 3, поэтому если на вашем сайте он не используется, то стили для чанка придётся прописывать вручную, впрочем как и для miniShop2, т.к. минишоп тоже завязан на Bootstrap.

Окно создания купона


Окно указания разделов для купона


Таблица с купонами на странице товара


Таблица со всеми купонами на основной странице пакета



Обсуждение дополнения в сообществе MODX.PRO

1.3.9-beta (24.06.2017)

  • Добавлено событие плагина mspcOnGetDiscountAmount с параметрами: msPromoCode $mspc, float $amount

1.3.8-beta (21.06.2017)

  • В купон добавлена вкладка "Заказы" со списком заказов, к которым был применён купон
  • Исправлена ошибка при попытке сортировать купоны по названию акции
  • В таблицу купонов добавлена возможность поиска по владельцу "реферреру"

1.3.7-beta2 (06.06.2017)

  • Поправлена работа с old_price на стороне JS

1.3.7-beta (05.06.2017)

  • Поправлено некорректное применение реферального купона

1.3.6-beta (16.05.2017)

  • Добавлен столбец с кол-вом активаций купона

1.3.5-beta3 (24.04.2017)

  • Исправлен косяк с повторным открытием окна создания купона/акции

1.3.5-beta2 (17.02.2017)

  • Поправлен поиск по промо-коду в бек-энде

1.3.5-beta (19.01.2017)

  • В сниппет mspcRefCoupon добавлены параметры: array|json|string status, int createdon_from, int createdon_to
  • Исправлено предупреждение при обращении к процессорам, связанное с неправильным вызовом темы лексикона
  • Восстановлена совместимость с PHP 5.4 и ниже в сниппете mspcForm

1.3.4-beta (21.12.2016)

  • В событие плагина mspcOnBindCouponToOrder добавлены параметры: msPromoCode $mspc, array $coupon, array $product, float $discount_amount
  • Исправлена ошибка вычисления скидки возникающая из-за неточности float чисел
  • Добавлено jQuery событие mspc_set в JS файл, срабатывающее при удачном/неудачном применении купона
  • Добавлено jQuery событие mspc_remove в JS файл, срабатывающее при отмене купона

1.3.3-beta (16.12.2016)

  • Добавлено событие плагина mspcOnBeforeSetProductDiscount с параметрами: msPromoCode $mspc, array $coupon, array $product, array $cart, string $key, float $price, int|float|string $discount
  • Добавлено событие плагина mspcOnSetProductDiscount с параметрами: msPromoCode $mspc, array $coupon, array $product, array $cart, string $key, float $price, float $old_price, int|float|string $discount, float $discount_amount
  • Небольшой рефакторинг
  • Сниппет mspcForm не отдаёт результат, если пакет отключён в настройках
  • Скидка удаляется, промо-код отменяется, если пакет отключён в настройках
  • В окне редактирования промо-кода объединены вкладки "Товары" и "Разделы", они стали субвкладками объединяющей их вкладки "Привязки"
  • Скорректирован внешний вид субвкладок

1.3.2-beta (14.12.2016)

  • Идентификаторы окон купонов и акций в ExtJS стали статичными

1.3.1-beta (05.12.2016)

  • Добавлено событие плагина mspcOnBeforeSetCoupon с параметрами: msPromoCode $mspc, array $coupon. Если в плагине вызвать метод $modx->event->output('Текст ошибки'); то купон не применится

1.3.0-beta2 (04.12.2016)

  • Исправлена принудительная замена содержимого чанка
  • Исправлен некорректный подсчёт процентной скидки для купона с фиксированной скидкой на всю корзину

1.3.0-beta (04.12.2016)

  • Добавлена поддержка фиксированной скидки (не в процентах) для всей корзины в целом

1.2.10-beta (03.12.2016)

  • Добавлено событие плагина mspcOnSetCoupon с параметрами: msPromoCode $mspc, array $coupon

1.2.9-beta3 (25.11.2016)

  • Поправлена ошибка, выскакивающая на старых версиях MODX, при открытии заказа в бек-энде, к которому не привязан промо-код

1.2.9-beta2 (04.11.2016)

  • Совместимость с методом добавления колбеков в miniShop2 => 2.4

1.2.9-beta (28.10.2016)

  • В системные настройки вынесено отображение вкладки на странице товара

1.2.8-beta (24.10.2016)

  • Округление дробной цены товара со скидкой до десятичных

1.2.7-beta (10.09.2016)

  • У многоразового промо-кода появилась настройка "Только для товаров без старой цены"

1.2.6-beta (09.09.2016)

  • Исправлен баг с неправильной работой с корзинами в разных контекстах

1.2.5-beta (22.09.2016)

  • Исправлен баг с хитрым применением купона несколько раз

1.2.4-pl (21.09.2016)

  • Поправлен вывод вкладки компонента на странице товара для miniShop2 версии => 2.4

1.2.3-pl2 (19.09.2016)

  • Убран вывод отладочной информации в системный лог при сохранении акции

1.2.3-pl (17.09.2016)

  • Исправлено некорректное отображение компонента в английской версии бек-энда

1.2.2-pl (22.07.2016)

  • В JS поправлена совместимость с miniShop2 версии 2.4

1.2.2-beta (20.06.2016)

  • Добавлена передача контекста при запросах к серверу

1.2.1-pl (04.05.2016)

  • Поправлены некоторые мелочи в сниппете mspcRefCoupon и в передаваемых параметрах

1.2.1-beta (04.05.2016)

  • Добавлено событие плагина mspcOnBindCouponToOrder с параметрами: msOrder $msOrder, mspcOrder $mspcOrder, mspcCoupon $mspcCoupon
  • Добавлена возможность сделать акцию реферальной. В неё будут генерироваться купоны для каждого пользователя сайта, который он впоследствии сможет рекламить.
  • Добавлен сниппет mspcRefCoupon, выводящий информацию о реферальном купоне, а также кол-во и список заказов, сделанных по нему. Сниппет принимает все общие параметры pdoTools, а также некоторые свои. Может работать в связке с pdoPage.

1.2.0-beta (08.04.2016)

  • Добавлены условия применения промо-кода
  • Рефакторинг ~70% кода компонента
  • Возможность подменить стандартный default.js на фронтенде

1.1.0-pl2 (27.02.2016)

  • Удалено заполнение лога отладкой

1.1.0-pl (20.01.2016)

  • Добавлены акции, к которым можно создавать сколько угодно одноразовых купонов
  • Добавлена возможность скачивать купоны акций пачками в CSV

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