msDiscount 1.1 + MS2.1.11 = Одноразовые скидочные купоны
Наступило лето, народ разъехался по отпускам и продажи в магазинах серьёзно просели. Если, конечно, вы не торгуете кремом для загара и холодным пивом — в этом случае у вас полный порядок.
Подстегнуть продажи помогут одноразовые скидочные купоны, которые появились в большом обновлении msDiscount.
Вы генерируете группы купонов, у которых есть абсолютная или процентная скидка и может быть срок действия. Для отличия одних купонов от других можно использовать уникальные префиксы.
Если дела идут хорошо, и все купоны группы уже разошлись — можно сгенерировать еще, в той же группе. Для этого нужно просто указать больше купонов при редактировании группы и сохранить.
Чтобы не копипастить сотни купонов вручную, предусмотрена выгрузка кодов в формате csv, который открывается всеми нормальными редакторами, включая Excel и LibreOffice.
Выгрузки можно использовать для сбора статистики по активациям и для печати рекламных материалов.
При погашении купона, в него записывается номер заказа miniShop2, для которого он был активирован, и время активации.
Для работы новой версии msDiscount необходимо обновить стабильную версию MS2. Если вы уже пользуетесь 2.2-beta, то можно внести изменения самостоятельно, или подождать, пока парни их импортируют в свою версию.
Изменений немного, но они очень важные. Во первых, появились новые системные события msOnBeforeGetOrderCost и msOnGetOrderCost. Как нетрудно догадаться, они нужны для изменения цены заказа при запросе msOrderHandler::getCost().
Именно эти события использует msDiscount, чтобы влиять на цену при оформлении заказа на странице корзины.
Вам нужно просто добавить новое поле в чанк оформления заказа tpl.msOrder.outer:
Текст сообщения можно поменять в словарях системы.
Если с купоном всё в порядке, то изменение цены выглядит так (gif):
Для работы обновления стоимости заказа, при изменении поля с купоном, вам нужно добавить callback функцию:
Как я уже говорил, при погашении кода, в его свойства записывается номер заказа и отображается в админке. Так вот, этот номер кликабельный, и отсюда следует второе изменение в MS2 — прямые ссылки на заказы в админке.
Теперь при открытии окошка заказа у вас в строке url будет добавляться &order=номерзаказа. При закрытии, этот параметр убирается. А при переходе в панель заказов по url с этим параметром, будет открываться заказ.
Кстати говоря, код купона и скидка также записываются и в поле properties заказа, чтобы можно было потом понять, почему он стоит меньше, чем должен. Это поле не видно в админке, но в БД оно есть.
Вот все изменения в MS2, одним коммитом.
Понятно дело, все страницы в админке msDiscount переписаны на новый лад. Везде можно пользоваться кнопочками, а кое-где даже выделять сразу несколько строк через Ctrl или Shift.
Но это ерунда, когда скидкам можно назначать категории товаров, а не только сами товары. Более того, выбираются все родители товара до 10 уровня вверх (т.е., не только msCategory), и уже из этих ресурсов выбирается максимальная скидка. Понятное дело, скидки на сами товары тоже никто не отменял.
Возможные варианты скидочной деятельности только что приумножились, поэтому не забывайте проверять алгоритм на специальной вкладке в админке.
Несмотря на всю проделанную работу, цена дополнения остаётся прежней — всего 1490 руб. Старые покупатели обновляются бесплатно, как обычно.
Изменений очень много, так что и я жду от вас отзывов по работе дополнения. Если что-то, вдруг, не работает — пишите, не скромничайте, будем исправлять.
Добавил демонстрацию работы скидок в оформление заказов на minishop2.com. А вот рабочие коды, проверяйте!
Подстегнуть продажи помогут одноразовые скидочные купоны, которые появились в большом обновлении msDiscount.
Вы генерируете группы купонов, у которых есть абсолютная или процентная скидка и может быть срок действия. Для отличия одних купонов от других можно использовать уникальные префиксы.
Если дела идут хорошо, и все купоны группы уже разошлись — можно сгенерировать еще, в той же группе. Для этого нужно просто указать больше купонов при редактировании группы и сохранить.
Чтобы не копипастить сотни купонов вручную, предусмотрена выгрузка кодов в формате csv, который открывается всеми нормальными редакторами, включая Excel и LibreOffice.
Выгрузки можно использовать для сбора статистики по активациям и для печати рекламных материалов.
При погашении купона, в него записывается номер заказа miniShop2, для которого он был активирован, и время активации.
Обновление miniShop2
Для работы новой версии msDiscount необходимо обновить стабильную версию MS2. Если вы уже пользуетесь 2.2-beta, то можно внести изменения самостоятельно, или подождать, пока парни их импортируют в свою версию.
Изменений немного, но они очень важные. Во первых, появились новые системные события msOnBeforeGetOrderCost и msOnGetOrderCost. Как нетрудно догадаться, они нужны для изменения цены заказа при запросе msOrderHandler::getCost().
Именно эти события использует msDiscount, чтобы влиять на цену при оформлении заказа на странице корзины.
Вам нужно просто добавить новое поле в чанк оформления заказа tpl.msOrder.outer:
<div class="form-group input-parent">
<label class="col-sm-4 control-label" for="coupon_code">Скидочный купон</label>
<div class="col-sm-6">
<input type="coupon_code" id="coupon_code" placeholder="XXXXX-XXXX-XXXX-XXXX" name="coupon_code" value="[[+coupon_code]]" class="form-control [[+errors.coupon_code]]">
</div>
</div>
При добавлении кода купона к заказу он проходит проверку и если что не так, то вы получите ошибку, а поле не сохранится. В общем, как обычно у заказов miniShop2.Текст сообщения можно поменять в словарях системы.
Если с купоном всё в порядке, то изменение цены выглядит так (gif):
Для работы обновления стоимости заказа, при изменении поля с купоном, вам нужно добавить callback функцию:
<script type="text/javascript">
miniShop2.Callbacks.Order.add.ajax.done = function(res) {
var res = res.responseJSON;
if (typeof(res.data['coupon_code']) != 'undefined') {
miniShop2.Order.getcost();
};
};
</script>
Можно прописать её хоть сразу после вызова [[!msOrder]].Как я уже говорил, при погашении кода, в его свойства записывается номер заказа и отображается в админке. Так вот, этот номер кликабельный, и отсюда следует второе изменение в MS2 — прямые ссылки на заказы в админке.
Теперь при открытии окошка заказа у вас в строке url будет добавляться &order=номерзаказа. При закрытии, этот параметр убирается. А при переходе в панель заказов по url с этим параметром, будет открываться заказ.
Кстати говоря, код купона и скидка также записываются и в поле properties заказа, чтобы можно было потом понять, почему он стоит меньше, чем должен. Это поле не видно в админке, но в БД оно есть.
Вот все изменения в MS2, одним коммитом.
Другие изменения
Понятно дело, все страницы в админке msDiscount переписаны на новый лад. Везде можно пользоваться кнопочками, а кое-где даже выделять сразу несколько строк через Ctrl или Shift.
Но это ерунда, когда скидкам можно назначать категории товаров, а не только сами товары. Более того, выбираются все родители товара до 10 уровня вверх (т.е., не только msCategory), и уже из этих ресурсов выбирается максимальная скидка. Понятное дело, скидки на сами товары тоже никто не отменял.
Возможные варианты скидочной деятельности только что приумножились, поэтому не забывайте проверять алгоритм на специальной вкладке в админке.
Заключение
Несмотря на всю проделанную работу, цена дополнения остаётся прежней — всего 1490 руб. Старые покупатели обновляются бесплатно, как обычно.
Изменений очень много, так что и я жду от вас отзывов по работе дополнения. Если что-то, вдруг, не работает — пишите, не скромничайте, будем исправлять.
Обновлено 17.06.2015
Добавил демонстрацию работы скидок в оформление заказов на minishop2.com. А вот рабочие коды, проверяйте!
MXPRO-Y51T-ADPC-VR36 MXPRO-QL78-9Y57-5B3P MXPRO-CSB1-KLW6-7X0R MXPRO-8GF6-TWBL-5EM6 MXPRO-VVA3-T3VQ-RX07 MXPRO-1ICA-A8FF-Y2J5 MXPRO-7XBJ-QKQI-8NRF MXPRO-F0WE-G2LF-I821 MXPRO-1X7J-GO17-I15F MXPRO-8QWW-T95J-M2JG MXPRO-3P20-DSHU-4FS3 MXPRO-4O00-PUFD-Q6XQ MXPRO-ADSV-VLRO-1KF4 MXPRO-2NOW-S7PN-LGD0 MXPRO-0J4G-GSWG-WF1H MXPRO-RJWI-T1DM-ES8X MXPRO-POA0-UDRL-MLRS MXPRO-4EZQ-KRX1-1KAL MXPRO-BDXG-WW4C-A42V MXPRO-8K6L-WO4Q-TT73Если кончатся — пишите в комментариях, добавлю еще.
Комментарии: 20
Обязательно будет куплено в ближайшее время. Купоны я ждал с самого зарождения компонента! Спасибо!
Ура!
А можно активировать купон до корзины? Т.е. на сайте есть товары с ценами и где-то поле купон, если человек вводит верный купон для него цены на сайте становятся ниже в соответствии со скидкой по купону. Замануха начинает работать еще до того как он в корзину их положил.
Неа, это купоны для оформления заказа.
Если у человека есть купон на скидку — какая еще может быть замануха? Он просто набирает заказ, рассчитывая на неё.
Если у человека есть купон на скидку — какая еще может быть замануха? Он просто набирает заказ, рассчитывая на неё.
где-то поле купон, если человек вводит верный купон для него цены на сайте становятся нижеЯ такого нигде не видел, если честно.
Чтобы замануха начала работать до оформления заказа, некоторые крутые ребята размещают соответствующий баннер с купоном в заметном месте сайта.
www.jcrew.com
www.jcrew.com
Ну, здесь-то промокод. То есть, многоразовый код на скидку — в msDiscount такого пока нет.
Будут покупки новой версии компонента, добавлю и промокоды.
Будут покупки новой версии компонента, добавлю и промокоды.
Понял, подождем)
А и один момент, чтоб не создавать отдельную тему.
Просьба вынести подключение скрипта и стиля из msdBuyNow в настройки как у всех компонентов, а то после обновления приходиться опять коментить эти строки в сниппете, так как используются свои стили и скрипты. Спасибо.
А и один момент, чтоб не создавать отдельную тему.
Просьба вынести подключение скрипта и стиля из msdBuyNow в настройки как у всех компонентов, а то после обновления приходиться опять коментить эти строки в сниппете, так как используются свои стили и скрипты. Спасибо.
Да, конечно, сделаю. Это не моё творчество было.
Есть покупки?
Если промокод многоразовый будет, то еще одна покупка будет…
Если промокод многоразовый будет, то еще одна покупка будет…
Если кому интересно, я сделал промокод так:
в плагине msDiscount
в плагине msDiscount
...
case 'msOnCreateOrder':
if ($data = $order->get()) {
/**@var msdCoupon $coupon */
if (!empty($data['coupon_code']) && $coupon = $modx->getObject('msdCoupon', array('code' => $data['coupon_code']))) {
/**@var msOrder $msOrder */
$couponcode = $data['coupon_code'];
//Если это не промокод то закрыавем его
if ($couponcode !='япония' && $couponcode !='сентябрь')
{
$coupon->fromArray(array(
'active' => false,
'activatedon' => date('Y-m-d H:i:s'),
'order_id' => $msOrder->get('id'),
));
$coupon->save();
}
..............
т.е. проверяю по коду,… и если этой промокод, то просто не закрываю его
Здравствуйте. Хочу сделать промокод (многоразовый) Могли бы вы помочь? Более подробно объяснить Что нужно делать?
Благодарю. Все работает!
Подскажите, как сократить количество символов в купоне?
Приветствую, а есть возможность, так скажем, дарить купон при регистрации. Например до того как пользователь зарегистрировался на сайте, показывать ему баннер с определенным промокодом (Дарим промокод на скидку 25% за регистрацию на сайте)
Нашли решение?
Добрый день, Илья! Скажите пожалуйста, а это длополнение способно обрабатывать скидку для каждого покупателя в зависимости от того, соклько этот покупатель купил раньше (что-то типа скидка постоянного покупателя). Спасибо за ответ.
Добрый день. Скажите, а можно ли при заполнении формы пользователем (например. подписка на рассылку), выдавать ему одноразовый купон?
Здравствуйте. При вводе купона в корзине не меняется цена, хотя скрипт добавила. Версия минишопа 2.4.18, msDiscount 1.3.10. Судя по файлам, нужные изменения в этой версии минишопа есть, правда, файлы выглядят уже немного иначе) Не нужно ли еще в них что-то добавить?
Добрый вечер! При вводе кода и обновление страницы у вас меняется стоимость?
Здравствуйте. Подскажите, а как вывести размер скидки по купону?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.