Корзина пуста
Войти О магазине FAQ Авторы Хостинг Сообщество
Скидочные промо-коды для miniShop2
Войдите, чтобы оформить заказ.
Загрузите дополнение из админки вашего сайта. Как?

Внимание, этот компонент требует версию PHP не ниже 5.3!
Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

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

  • Полная 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.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
  1. Volk 14 января 2016, 09:05 #
    Потестил, работает как нужно, ошибок вроде не возникает. Пять баллов)
    Теперь жду добавления функционала, про который я писал в комментариях ( генерация одноразовых (можно и многоразовых) групп купонов и т.п. уж очень этого не хватает, то по одному купону добавлять долго для заказчика, если нужно их много сделать и скачать), после этого можно будет уже внедрять в серьезные проекты, а пока только в небольшие.
    1. Павел 20 января 2016, 01:00 #
      Новая версия с пожеланиями в магазине. Обновляйтесь.
      1. Volk 20 января 2016, 07:55 #
        Большое спасибо за такое быстрое реагирование на идею по доработке.
    2. Никита 02 августа 2016, 23:32 #
      Отличный плагин и отличная поддержка!
      Спасибо за работу!
      1. termit 16 сентября 2016, 08:27 #
        Отличная работа, автор молодец.
        Пожелания:
        -добавить опцию Если есть Олд прайс не пересчитывать скидку Если олд прайса нет то пересчитывать.
        Или другим образом решить проблему когда товар уже существует со скидкой и чтобы купоны на него не действовали.
        1. Павел 10 октября 2016, 00:21 #
          Обновляйтесь до версии 1.2.7-beta, в ней появилась настройка «Применять только к товарам без старой цены» у многоразовых купонов.
        2. Богдан 29 октября 2016, 18:56 #
          Отличное дополнение! Качественная и оперативная поддержка от автора. Спасибо!
          1. Василий Краковецкий 17 ноября 2016, 17:30 #
            В компоненте не работают целочисленные скидки(процентные работают нормально). Т.е. если задать скидку 500 рублей то для четырех товаров получим скидку в 2000 рублей. Пусть автор либо уберет вообще возможность вводить любые цены кроме процентов, либо сделает данный функционал(а задачка не из легких потому что из компонента переопределить метод status у корзины не так то просто), либо честно напишет что с такими ценами компонент работать не умеет и не будет вводить покупателей в заблуждение.
            1. Павел 17 ноября 2016, 18:12 #
              и не будет вводить покупателей в заблуждение.
              А давай-ка ты честно напишешь, где автор вводил покупателей в заблуждение?..
              1. Павел 04 декабря 2016, 01:14 #
                1.3.0-beta (04.12.2016)
                ==============
                — Добавлена поддержка фиксированной скидки (не в процентах) для всей корзины в целом
                Из-за некоторых особенностей в таком типе скидки, чтобы работала фиксированная скидка на всю корзину, надо при создании купона указать галочку «Скидка на всю корзину» и в поле «Скидка» указать число без процента на конце. Вот так примерно — file.modx.pro/files/9/f/3/9f30c064528613fc9eeffb5353a07708.png
                1. Василий Краковецкий 05 декабря 2016, 18:43 #
                  Спасибо большое! Совсем другое дело!
              2. Nijiro 04 декабря 2016, 18:06 #
                Отличный компонент, моментальная поддержка. Всем рекомендую!
                1. but1head 04 декабря 2016, 22:10 #
                  Павел красавец, отличный компонент!
                  Войдите на сайт, чтобы прокомментировать.
                  График скачиваний дополнения за последние 30 дней. Серым фоном отмечены выходные.
                  New!
                  Название
                  msPromoCode
                  Сайт дополнения
                  Версия
                  1.3.5-beta2
                  Дата выпуска
                  17.02.2017
                  Автор выпуска
                  Павел
                  Цена
                  742.5 a
                  Загрузок
                  258
                  Версия MODX
                  от 2.3
                  Теги
                  Другие дополнения автора
                  CurrencyCalc, xParser, msOrderFiles, Compiler, msDeliveryOnMap, tvSuperSelect, ms2GalleryBabelCopying, imgArea, msKuponator, getQRcode, videoGallery, YandexMaps, phpThumbOn
                  Поделиться