Как ограничить количество пользовательских баллов, которые получают пользователи?
У меня есть тип контента "Контент" с полем "Значение" (целое число) и флагом "Публикация контента и предоставление очков пользователю". Каждый раз, когда Контент помечается этим флагом, я хотел бы предоставить автору Контента несколько пользовательских баллов, равных значению в поле "Значение", но не более 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
точки
Мне пришлось вставить второе вычисление, потому что в противном случае я не смог бы вычесть "разницу" из пользовательских точек пользователя.