我創建了一個規則,當用戶在節點上添加註釋時授予用戶用戶點。不過,我只想給他們這些點數一次。這意味着:當他們在同一個節點上作出第二次或第三次反應時,他們不會獲得更多的積分,但是在對另一個節點進行評論之後,他們將被授予積分。如何在添加評論一次後授予用戶用戶點數?
我該怎麼做?
我創建了一個規則,當用戶在節點上添加註釋時授予用戶用戶點。不過,我只想給他們這些點數一次。這意味着:當他們在同一個節點上作出第二次或第三次反應時,他們不會獲得更多的積分,但是在對另一個節點進行評論之後,他們將被授予積分。如何在添加評論一次後授予用戶用戶點數?
我該怎麼做?
我用Flags模塊解決了我的問題:我創建了名爲'評論此節點'的標誌&'第一反應'*和規則稱爲'評論在節點上'。這是我的規則的設置:
活動:節能新評論
條件後:
[comment:node]
,內容類型: 文章[comment:node]
,代表其檢查的用戶:[comment:author]
行動:
[comment:author]
, 點:2,積分類:反應,實體:[comment:node]
, 說明:新的反應,操作:添加, 顯示:false,中等:自動批准[comment:node]
,w上的用戶軟管代表到標誌:[comment:author]
,跳過 權限檢查:假[comment]
, 用戶代表其檢舉:[comment:author]
,跳過許可 檢查:假因此,每當用戶第一次向某個節點添加評論時,該節點被標記爲「評論一個節點」,該反應被標記爲「第一反應」並且添加該評論的用戶是獎勵2分。
**我使用related question中的'First comment'標誌。*
規則必須具備: 活動:節約評論
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;
}
}
我應該在哪裏粘貼此代碼?我迫不及待地測試它! – Jeroen
Jeroen,我在帖子中回答你。 – QArea