2013-10-11 16 views
0

我創建了一個規則,當用戶在節點上添加註釋時授予用戶用戶點。不過,我只想給他們這些點數一次。這意味着:當他們在同一個節點上作出第二次或第三次反應時,他們不會獲得更多的積分,但是在對另一個節點進行評論之後,他們將被授予積分。如何在添加評論一次後授予用戶用戶點數?

我該怎麼做?

回答

0

我用Flags模塊解決了我的問題:我創建了名爲'評論此節點'的標誌&'第一反應'*和規則稱爲'評論在節點上'。這是我的規則的設置:

活動:節能新評論

條件後:

  • 內容的類型參數:內容:[comment:node],內容類型: 文章
  • NOT節點被標記參數:標記:在該節點上註釋,節點: [comment:node],代表其檢查的用戶:[comment:author]

行動:

  • 格蘭特指向用戶參數:用戶:[comment:author], 點:2,積分類:反應,實體:[comment:node], 說明:新的反應,操作:添加, 顯示:false,中等:自動批准
  • 標記節點參數:標記:對節點添加註釋,節點: [comment:node],w上的用戶軟管代表到標誌:[comment:author],跳過 權限檢查:假
  • 標誌評論:參數:標誌:第一反應,點評:[comment], 用戶代表其檢舉:[comment:author],跳過許可 檢查:假

因此,每當用戶第一次向某個節點添加評論時,該節點被標記爲「評論一個節點」,該反應被標記爲「第一反應」並且添加該評論的用戶是獎勵2分。

**我使用related question中的'First comment'標誌。*

0

規則必須具備: 活動:節約評論

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; 
} 
} 
+0

我應該在哪裏粘貼此代碼?我迫不及待地測試它! – Jeroen

+0

Jeroen,我在帖子中回答你。 – QArea