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]
,跳过权限 检查:错误[注释:作者]