我正在使用用户点数,用户业力,上/下投票模块。我想知道是否有一种方法可以将其配置为仅在您拒绝某项投票而不赞成某项投票时扣除用户点数。
与Stack Exchange的信誉系统类似:如果您投票赞成,则不会对接,但是如果您投票反对,则将对接。
使用信誉用户积分->业力积分->选民积分成本设置,无论投票方向如何,我都只能将其配置为收费。有任何想法吗?
我正在使用用户点数,用户业力,上/下投票模块。我想知道是否有一种方法可以将其配置为仅在您拒绝某项投票而不赞成某项投票时扣除用户点数。
与Stack Exchange的信誉系统类似:如果您投票赞成,则不会对接,但是如果您投票反对,则将对接。
使用信誉用户积分->业力积分->选民积分成本设置,无论投票方向如何,我都只能将其配置为收费。有任何想法吗?
Answers:
添加模块以覆盖User Karma的设置无疑是一个选择。
另一种可能性是使用Rules和Voting_Rules来控制自己的设置,以增加和减少用户点。
启用后,您可以转到/ admin / config / workflow / rules和“添加新规则”。将其设置为对事件“节点上的用户投票”做出反应。
添加条件“检查投票的值”,如果该条件小于0,则向“授予用户分数”中添加一个动作,但将其设为负数。
这是此规则的屏幕截图:
可选地,如果要结合使用用户业力,则可以对“用户被授予积分”事件做出反应,并测试条件并在适当情况下进行覆盖。
对于D7,我建议结合使用这些替代且经常使用的模块,以在某些节点被否决(或再次删除此类downvote,这也可能会发生……)时减去(或添加)用户点:
以下是每种情况下的必需规则(在启用上述必需模块后,使用Rule UI将其导入您自己的站点中)。这些规则中的假设:
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)已取消downvote(到节点的作者),用户点...... 和也+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
在每个用户点交易的使用。
使用这样的规则,对上投票和/或下投票收取多少费用的配置仅是通过使用规则UI调整要授予(或删除)的用户点的值的问题。
另外还要注意description
,operation
并reference
在每个用户积分交易中使用。这还将改善典型的用户点报告(通过在实际用户点交易中添加的各种详细信息)。
使用条件规则模块,您还可以将这些规则合并为一个规则(这简化了维护它们)。
作业:调整上面显示的规则,以实现类似于SE奖励的功能(=将一定数量的用户点从一个用户转移到另一个用户)。
PS:“ 如果您投票否决,您将获得声望对接 ”(在SE上)仅适用于答案,不适用于问题。要像您希望的那样完善它,只需添加适当的额外规则条件(例如,基于诸如此类的内容类型)。