Для D7 я рекомендую использовать комбинацию этих альтернативных и часто используемых модулей для вычитания (или добавления) пользовательских баллов, когда за какой-то узел отказано (или такое понижение снова удаляется, что тоже может случиться ...):
Ниже приведены обязательные правила для каждого из этих случаев (используйте интерфейс правил, чтобы импортировать их на свой сайт после того, как вы включили необходимые модули, упомянутые выше). Предположения, сделанные в этих правилах:
- Они используют тип контента с именем машины
article
(адаптируйте это имя, чтобы оно соответствовало имени вашего собственного компьютера, или пропустите это Условие правил, чтобы включить его для любого типа контента, за который можно голосовать).
- Значение понижающего голоса совпадает с "
-1
".
Понизить рейтинг узла
Приведенное ниже правило будет вычитать -2 (предоставить -2) пользовательских балла для понижения (автору узла) ... И также -1 пользовательское балл для избирателя:
{ "rules_votedown_node" : {
"LABEL" : "votedown_node",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_insert_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "article" : "article" } }
}
},
{ "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "node:author" ],
"points" : "-2",
"tid" : "0",
"entity" : [ "" ],
"description" : "Receive downvote to [node:type-name] \u0022[node:title]\u0022",
"operation" : "DownvoteReceived",
"reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
"display" : "1",
"moderate" : "default"
}
},
{ "userpoints_action_grant_points" : {
"user" : [ "vote:user" ],
"points" : "-1",
"tid" : "0",
"entity" : [ "" ],
"description" : "Issue downvote to [node:type-name] \u0022[node:title]\u0022",
"operation" : "DownvoteIssued",
"reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
"display" : "1",
"moderate" : "default"
}
}
]
}
}
Отмена понижения узла
Приведенное ниже правило предоставит +2 (= удалить -2) пользовательских балла за отмененное отрицательное голосование (автору узла) ... И также +1 пользовательское очко за избирателя:
{ "rules_votedown_node_cancel" : {
"LABEL" : "votedown_node_cancel",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_delete_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "article" : "article" } }
}
},
{ "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "node:author" ],
"points" : "2",
"tid" : "0",
"entity" : [ "" ],
"description" : "Cancel downvote to [node:type-name] \u0022[node:title]\u0022",
"operation" : "DownvoteCancelled",
"reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
"display" : "1",
"moderate" : "default"
}
},
{ "userpoints_action_grant_points" : {
"user" : [ "vote:user" ],
"points" : "1",
"tid" : "0",
"entity" : [ "" ],
"description" : "Withdraw downvote to [node:type-name] \u0022[node:title]\u0022",
"operation" : "DownvoteWithdrawn",
"reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
"display" : "1",
"moderate" : "default"
}
}
]
}
}
Несмотря на то, что это может быть неочевидно при просмотре вышеупомянутых экспортированных правил, обратите внимание description
, operation
и reference
используется в каждой из транзакций User Point.
Используя такие правила, настройка суммы, взимаемой за положительные и отрицательные голоса, является всего лишь вопросом адаптации значений пользовательских точек, которые будут предоставлены (или удалены) с помощью пользовательского интерфейса правил.
Также обратите внимание description
, operation
и reference
используется в каждой из транзакций User Points. Это также улучшит типичные отчеты по пользовательским баллам (с помощью различных деталей, добавленных в фактические транзакции с пользовательскими баллами).
Используя модуль « Условные правила », вы также можете объединить эти правила в одно правило (что упрощает их обслуживание).
Домашнее задание : адаптируйте показанные выше правила, чтобы реализовать нечто похожее на вознаграждения в SE (= передать некоторое количество пользовательских баллов от одного пользователя другому).
PS: « если вы проголосуете за что-то, вы получаете пристыкованные очки репутации » (на SE) верно только для ответов, а не для вопросов. Чтобы уточнить это так, как вы хотели бы, это просто вопрос добавления соответствующего дополнительного условия правил (например, на основе типа контента so).