노드에 주석을 추가 할 때 사용자에게 사용자 지점을 부여하는 규칙을 만들었습니다. 그러나 나는이 점들을 한 번만 부여하고 싶다. 즉, 동일한 노드에서 두 번째 또는 세 번째로 반응 할 때 더 많은 포인트를 얻지는 못하지만 다른 노드에 주석을 첨부 한 후에는 포인트가 부여됩니다.댓글을 한 번 추가 한 후 사용자 사용자 포인트를 부여하는 방법은 무엇입니까?
어떻게하면됩니까?
노드에 주석을 추가 할 때 사용자에게 사용자 지점을 부여하는 규칙을 만들었습니다. 그러나 나는이 점들을 한 번만 부여하고 싶다. 즉, 동일한 노드에서 두 번째 또는 세 번째로 반응 할 때 더 많은 포인트를 얻지는 못하지만 다른 노드에 주석을 첨부 한 후에는 포인트가 부여됩니다.댓글을 한 번 추가 한 후 사용자 사용자 포인트를 부여하는 방법은 무엇입니까?
어떻게하면됩니까?
Flags 모듈에서 내 문제를 해결했습니다 : '이 노드에 주석 처리 됨'이라는 플래그를 생성했습니다. & '첫 번째 반응'* 및 '노드에 주석 처리됨'규칙이 생성되었습니다.
이벤트 : 새로운 코멘트를
조건 저장 한 후 :
[comment:node]
콘텐츠 유형 : 제[comment:node]
, 확인을 위해 사용자 :작업 : 사용자 매개 변수에
[comment:author]
, 포인트 : 엔티티 반응 : [comment:node]
, 설명 : 2, 카테고리 포인트 새로운 반응, 조작을 : 추가, 표시 : 거짓, 보통 : 자동 승인[comment:node]
, 사용자에 대한 플래그에 호스를 대신하여 : [comment:author]
, 권한 검사를 건너 뛰기 : 거짓[comment]
, 사용자는 그 대신 플래그에 : [comment:author]
허가를 검사 건너 뛰기 : 거짓을사용자가 특정 노드에 처음으로 주석을 추가 할 때마다 노드에 '노드에 주석 처리됨'플래그가 지정되고 반응은 '첫 번째 반응'으로 표시되고 주석을 추가 한 사용자는 2 점을 받았다.
는 ** 나는 related question에서 '첫 번째 주석'플래그를 사용합니다. *
규칙이 필요합니다 이벤트 :
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
제로인, 나는 내 우편으로 대답했다. – QArea