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 =)

Надеюсь, это поможет. Дайте мне знать, как это происходит!

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