Как ограничить количество пользовательских баллов, которые получают пользователи?

У меня есть тип контента "Контент" с полем "Значение" (целое число) и флагом "Публикация контента и предоставление очков пользователю". Каждый раз, когда Контент помечается этим флагом, я хотел бы предоставить автору Контента несколько пользовательских баллов, равных значению в поле "Значение", но не более 5.

У меня вопрос по поводу условия "максимум 5". Я создал 2 отдельных правила с дополнительным условием "Сравнение данных": одно с [flagged-node:field-value меньше 6], а другое с [flagged-node:field-value больше 5]. (Обратите внимание, что здесь я могу выбрать "значение поля"!) Разве нельзя сделать это только одним правилом?

Примечание. У меня также есть проблема с полем "Значение". См.: Предоставление пользователю пользовательских баллов, равных значению определенного поля.

1 ответ

Решение

Я нашел решение для моего вопроса; может быть, это может помочь и другим. Я на самом деле создал правило "исправления", которое активируется после того, как пользователь получил пользовательские баллы, а узел "Контент" был помечен как "Публикация контента и предоставление баллов пользователю". Вот как я настроил правило:

СОБЫТИЕ

  • Пользователь был награжден userpoints
  • Узел был помечен как "Публикация контента и предоставление очков пользователю".

Затем я проверил, больше ли количество баллов, чем 5.

УСЛОВИЯ

  • Сравнение данных: [userpoints-transaction:points] больше, чем 5

Наконец, я вычислил разницу между добавленными пользовательскими точками и 5 и вычел это значение из пользовательских точек пользователя.

АКЦИИ

  • Рассчитать значение: [userpoints-transaction:points] "-" 5 (имя переменной: разница)
  • Рассчитать значение: [difference] "*" -1 (имя переменной: substract)
  • Предоставление баллов пользователю: grant [userpoints-transaction:user]substract точки

Мне пришлось вставить второе вычисление, потому что в противном случае я не смог бы вычесть "разницу" из пользовательских точек пользователя.

Другие вопросы по тегам