Skip to content
  1. Компоненты
  2. msBonus2
  3. Быстрый старт

Быстрый старт

Вывод формы бонусов

Просто вызываем сниппет msBonus2Form в нужном месте:

fenom
{'!msBonus2Form' | snippet}

Вывод списываемых бонусов вне чанка формы

Вывести количество списываемых бонусов вне чанка tpl.msBonus2.form, например возле итоговой стоимости заказа, можно таким кодом:

fenom
{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.

Вот пример:

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.

Вот пример:

json
{
  "order_accrual": 31556926,
  "signup": 2629743,
  "dob": 604800,
  "offline": 0
}

Здесь мы указали, что баллы:

  • за заказ устареют спустя год,
  • за регистрацию - спустя месяц,
  • за день рождения - спустя неделю.

Дополнительные действия для ручного начисления и списания

Действия ручного начисления и списания хранятся в системной настройке msb2_form_action_types. Указываются в формате JSON.

Вот пример:

json
{
  "offline": {
    "+": "Оффлайн начисление",
    "-":"Оффлайн списание"
  },
  "win": {
    "+": "Победа в конкурсе"
  }
}

Рутинные действия через cron-скрипт

Рутинные действия – это начисление бонусов в честь ДР, перемещение бонусов за заказ с резервного счёта на основной, списание устаревших бонусов и т.п.

За указание метода выполнения рутинных действий отвечает системная настройка msb2_routine_running_method. В ней можно прописать frontend или cron. По-умолчанию там указан метод frontend, просто чтобы быстро стартануть с бонусной системой, но если вы не хотите жертвовать даже каплей производительности сайта и уменьшить нагрузку на фронтенд, лучше использовать метод cron.

При этом вам необходимо самостоятельно настроить запуск данного скрипта в крон 1 раз в минуту (в крайнем случае 1 раз в 10 минут), иначе бонусная система будет работать некорректно!

Внимание

Запускайте скрипт от имени юзера, под которым крутится сайт! Если запустить от рута или другого юзера, то в кеше будут созданы папки с чужими правами и MODX начнёт сыпать ошибки о невозможности удалить файл или директорию в кеше.

Для этого, если вы зашли в терминал от рута или судо юзера, во всех примерах запуска, перед php … пропишите sudo -u{user}, чтобы получилось примерно так:

bash
sudo -u{user} php /path_to_script.php

где {user} - это имя пользователя в системе, под которым крутится сайт, в ином случае конструкцию sudo -u{user} нужно удалить.

Пример запуска скрипта рутинных действий через крон 1 раз в минуту:

bash
* * * * * sudo -u{user} php /path_to_site/core/components/msbonus2/cron/routine.php

Где {user} - это имя пользователя в системе, под которым крутится сайт.