Быстрый старт
Вывод формы бонусов
Просто вызываем сниппет msBonus2Form
в нужном месте:
{'!msBonus2Form' | snippet}
Вывод списываемых бонусов вне чанка формы
Вывести количество списываемых бонусов вне чанка tpl.msBonus2.form
, например возле итоговой стоимости заказа, можно таким кодом:
{var $msb2_discount = ($.session.msBonus2 && $.session.msBonus2.writeoff)
? $.session.msBonus2.writeoff[$_modx->context.key] : 0}
<div class="[ js-msb2-discount-wrap ]" style="display:{$msb2_discount ? 'block' : 'none'}">
Оплата бонусами:
<span class="[ js-msb2-discount-value ]">{$msb2_discount ?: 0}</span>
{'ms2_frontend_currency' | lexicon}
</div>
Информация
Поддерживается с версии 1.1.4
Статусы заказов
Если у вас были изменены основные статусы заказов, то необходимо зайти в системные настройки компонента и указать значимые для работы статусы: msb2_order_status_new
, msb2_order_status_paid
, msb2_order_status_cancel
.
Разделы для начисления и списания
За это отвечают системные настройки msb2_categories_for_accrual_of_points
и msb2_categories_for_writing_off_points
. Каждая из них принимает id разделов через запятую.
Время активации баллов
За это отвечает системная настройка msb2_activation_time_for_bonus
. В качестве ключа в ней указывается тип начисления, а в качестве значения - кол-во секунд, спустя которое баллы окажутся на балансе пользователя (до этого они будут лежать у него в резерве).
Указывается в формате JSON.
Вот пример:
{
"order_accrual": 86400,
"signup": 86400,
"dob": 0,
"offline": 0
}
Здесь мы указали, что баллы за заказ и за регистрацию пользователь сможет использовать только спустя сутки: 86400 / 24 / 60 / 60 = 1
.
Время жизни баллов
За это отвечает системная настройка msb2_lifetime_for_bonus
. В качестве ключа в ней указывается тип начисления, а в качестве значения - кол-во секунд, спустя которое баллы сгорают на бонусном счёте пользователя.
Обратите внимание, чтобы значения в данной настройке были выше (либо по нулям), чем в msb2_activation_time_for_bonus
.
Указывается в формате JSON.
Вот пример:
{
"order_accrual": 31556926,
"signup": 2629743,
"dob": 604800,
"offline": 0
}
Здесь мы указали, что баллы:
- за заказ устареют спустя год,
- за регистрацию - спустя месяц,
- за день рождения - спустя неделю.
Дополнительные действия для ручного начисления и списания
Действия ручного начисления и списания хранятся в системной настройке msb2_form_action_types
. Указываются в формате JSON.
Вот пример:
{
"offline": {
"+": "Оффлайн начисление",
"-":"Оффлайн списание"
},
"win": {
"+": "Победа в конкурсе"
}
}
Рутинные действия через cron-скрипт
Рутинные действия – это начисление бонусов в честь ДР, перемещение бонусов за заказ с резервного счёта на основной, списание устаревших бонусов и т.п.
За указание метода выполнения рутинных действий отвечает системная настройка msb2_routine_running_method
. В ней можно прописать frontend
или cron
. По-умолчанию там указан метод frontend
, просто чтобы быстро стартануть с бонусной системой, но если вы не хотите жертвовать даже каплей производительности сайта и уменьшить нагрузку на фронтенд, лучше использовать метод cron
.
При этом вам необходимо самостоятельно настроить запуск данного скрипта в крон 1 раз в минуту (в крайнем случае 1 раз в 10 минут), иначе бонусная система будет работать некорректно!
Внимание
Запускайте скрипт от имени юзера, под которым крутится сайт! Если запустить от рута или другого юзера, то в кеше будут созданы папки с чужими правами и MODX начнёт сыпать ошибки о невозможности удалить файл или директорию в кеше.
Для этого, если вы зашли в терминал от рута или судо юзера, во всех примерах запуска, перед php …
пропишите sudo -u{user}
, чтобы получилось примерно так:
sudo -u{user} php /path_to_script.php
где {user}
- это имя пользователя в системе, под которым крутится сайт, в ином случае конструкцию sudo -u{user}
нужно удалить.
Пример запуска скрипта рутинных действий через крон 1 раз в минуту:
* * * * * sudo -u{user} php /path_to_site/core/components/msbonus2/cron/routine.php
Где {user}
- это имя пользователя в системе, под которым крутится сайт.