Drupal 7 如何在添加一次注释后授予用户点数?

Drupal 7 如何在添加一次注释后授予用户点数?,drupal-7,comments,userpoints,Drupal 7,Comments,Userpoints,我创建了一个规则,当用户在节点上添加注释时,授予他们用户点。然而,我只想给他们一次这些分数。这意味着:当他们在同一个节点上第二次或第三次做出反应时,他们不会得到更多的分数,但在评论另一个节点后,他们仍然会获得分数 我如何才能做到这一点?规则必须具备: 事件:保存注释之前 Conditions: this code global $user; $node =array(); $query = db_select('comment', 'c'); $query->fields('c', a

我创建了一个规则,当用户在节点上添加注释时,授予他们用户点。然而,我只想给他们一次这些分数。这意味着:当他们在同一个节点上第二次或第三次做出反应时,他们不会得到更多的分数,但在评论另一个节点后,他们仍然会获得分数

我如何才能做到这一点?

规则必须具备: 事件:保存注释之前

Conditions: this code

global $user;
$node  =array();
$query = db_select('comment', 'c');
$query->fields('c', array('nid'));
$query->condition('c.uid', $user->uid);
$result = $query->execute();
while ($res = $result->fetchAll()) {
foreach ($res AS $re) {
$node[] = $re->nid;
}
}

if(!in_array($comment->nid, $node)){
return TRUE;
}
操作:授予用户用户点数

=============================

条件:执行自定义PHP代码 或创建自定义条件

/**
 * Implements hook_rules_condition_info().
 */
function MYMODULE_rules_condition_info() {
  $conditions = array();
  $conditions['MYCONDITION'] = array(
    'label' => t('lable'),
    'parameter' => array(
      'user' => array(
        'type' => 'user',
        'label' => t('User'),
      ),
    ),
    'group' => t('Custom'),
    'callbacks' => array(
      'execute' => 'MYMODULE_rules_condition_MYCONDITION',
    ),
  );
  return $conditions;
}
function MYMODULE_rules_condition_MYCONDITION($user) {
$node  =array();
$query = db_select('comment', 'c');
$query->fields('c', array('nid'));
$query->condition('c.uid', $user->uid);
$result = $query->execute();
while ($res = $result->fetchAll()) {
foreach ($res AS $re) {
$node[] = $re->nid;
}
}

if(!in_array($comment->nid, $node)){
return TRUE;
}
}

我解决了Flags模块的问题:我创建了名为'Commented on this node'&'First Response'*的标志和名为'Commented on a node'的规则。以下是我的规则设置:

事件:保存新注释后

条件:

  • 内容的类型参数为:内容:
    [注释:节点]
    ,内容类型: 文章
  • 未标记节点参数:标记:对此节点进行了注释,节点:
    [注释:节点]
    ,代表其检查的用户:
    [注释:作者]
行动:

  • Grant指向用户参数:用户:
    [注释:作者]
    , 点:2,点类别:反应,实体:
    [注释:节点]
    ,, 描述:新反应,操作:添加, 显示:错误,中等:自动批准
  • 标记节点参数:标记:对节点进行了注释,节点:
    [注释:节点]
    ,代表其标记的用户:
    [注释:作者]
    ,跳过 权限检查:false
  • 标记注释:参数:标记:第一反应,注释:
    [Comment]
    , 代表其标记的用户:
    [注释:作者]
    ,跳过权限 检查:错误
因此,每当用户第一次向某个节点添加评论时,该节点被标记为“对某个节点进行了评论”,该反应被标记为“第一反应”,添加评论的用户将获得2分奖励

**我在中使用“First comment”标志*