Userpoints Karma-是否可以仅对否决票收取用户点数?


8

我正在使用用户点数,用户业力,上/下投票模块。我想知道是否有一种方法可以将其配置为仅在您拒绝某项投票而不赞成某项投票时扣除用户点数。

与Stack Exchange的信誉系统类似:如果您投票赞成,则不会对接,但是如果您投票反对,则将对接。

使用信誉用户积分->业力积分->选民积分成本设置,无论投票方向如何,我都只能将其配置为收费。有任何想法吗?


听起来您必须以编程方式执行此操作。检查模块是否提供了挂钩。
刺松

@drupality:我不同意,请参阅我的回答以获取有关原因的详细信息...
Pierre.Vriens

Answers:


5

添加模块以覆盖User Karma的设置无疑是一个选择。

另一种可能性是使用RulesVoting_Rules来控制自己的设置,以增加和减少用户点。

启用后,您可以转到/ admin / config / workflow / rules和“添加新规则”。将其设置为对事件“节点上的用户投票”做出反应。

添加条件“检查投票的值”,如果该条件小于0,则向“授予用户分数”中添加一个动作,但将其设为负数。

这是此规则的屏幕截图: 在此处输入图片说明

可选地,如果要结合使用用户业力,则可以对“用户被授予积分”事件做出反应,并测试条件并在适当情况下进行覆盖。


1

对于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"
        }
      }
    ]
  }
}

虽然它可能不是从只是浏览上面,导出的规则是显而易见的注意descriptionoperationreference在每个用户点交易的使用。

使用这样的规则,对上投票和/或下投票收取多少费用的配置仅是通过使用规则UI调整要授予(或删除)的用户点的值的问题。

另外还要注意descriptionoperationreference在每个用户积分交易中使用。这还将改善典型的用户点报告(通过在实际用户点交易中添加的各种详细信息)。

使用条件规则模块,您还可以将这些规则合并为一个规则(这简化了维护它们)。

作业:调整上面显示的规则,以实现类似于SE奖励的功能(=将一定数量的用户点从一个用户转移到另一个用户)。

PS:“ 如果您投票否决,您将获得声望对接 ”(在SE上)仅适用于答案,不适用于问题。要像您希望的那样完善它,只需添加适当的额外规则条件(例如,基于诸如此类的内容类型)。


请停止以“请参阅我对另一个问题的答案”开头的答案。如果您对另一个问题的回答解决了这个问题,则这些帖子将被重复发送。如果不是,则答案仅是切线的,不回答问题,需要删除。在您自己采取适当措施之前,我会给您时间来决定要做什么。无论哪种方式,这种停止发布一个问题的长答案,然后发布指向其他问题的答案的习惯将会停止。
克莱夫(Clive)

更明确地说:答案本质上是指向其他问题的其他答案的指针。需要针对所提出的问题量身定制答案。如果相同的答案适用于两个问题,则一个问题很可能与另一个问题重复。
kiamlaluno

刚刚执行了相当于“ DownvoteWithdrawn ”的Merci ...
Pierre.Vriens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.