Drupal 7 - Fivestar и пользовательские очки
У меня есть тип контента и возможность для зарегистрированных пользователей голосовать за него. На узле 5 различных пятизвездочных голосований. Теперь я хочу добавить пользовательские точки и хотел спросить, возможно ли, чтобы, когда пользователь голосует, он получал 1 балл за каждый голос на узле, то есть 5 баллов, если он голосовал в каждой категории. у него есть возможность изменить голосование позже, но тогда он не должен больше получать очки. Это возможно?
поздравил
1 ответ
Хотя это не выглядит как существующий модуль 7.x или 8.x, который выполняет это, есть два способа, которыми вы сможете достичь своей цели:
- Написать модуль. API Userpoints довольно хорошо документирован, и должна быть возможность создать модуль для увеличения количества пользовательских точек пользователя при изменении поля с пятью звездами. Чтобы избежать дублирования, обратите внимание, что это поле выглядит так, как будто оно должно выполнить дедупликацию, которую вы ищете (при условии, что вы установили
txn_id
для некоторой комбинации текущего идентификатора узла, идентификатора поля и идентификатора пользователя:
'txn_id' => (int) Transaction ID of a current points record. If
present an UPDATE occurs
- Используйте правила. Модуль userpoints интегрируется с Правилами, так что вы должны быть в состоянии реализовать ваш вариант использования userpoints без написания какого-либо кода. В соответствии с примечаниями по интеграции Правил пользовательских точек вы можете сравнить текущие пользовательские точки с количеством точек до транзакции:
Compare Userpoints before the transaction
- This condition is used to compare the amount of userpoints the user had before the userpoints was added to/deducted from the user against a specified value.
- The 'Amount to compare' value is checked as >= (greater than or equal to) and the Negate checkbox will change the condition to < (less than) as it will be any value other than >=. If you would like to get an exact value, say 1, you can add two of the condition to use >= and < to specify one number. Simple math stuff here =)
Надеюсь, это поможет. Дайте мне знать, как это происходит!