2010-07-02 3 views
1

이상한 것은 아니지만 기본적으로 핵심 댓글 모듈을 사용하여 인증 된 사용자가 노드에 대한 댓글을 게시하고 볼 수 있도록하는 Drupal 사이트가 있습니다. 인증되지 않은 사용자도 주석을 게시 할 수 있지만이를 볼 수 없도록 확장해야합니다. 인증 된 사용자는 다른 인증 된 사용자가 주석을 볼 수만 있습니다. 관리자 사용자 만 모든 댓글을 볼 수 있습니다.Drupal의 역할을 기반으로 표시되는 댓글 제어

이 방법이 있습니까? 권한은이 유연성을 허용하지 않는 것 같습니다 (액세스 주석은 사용자에게 양식을 제공해야하지만 승인 된 모든 주석을 표시합니다).

일부 드루팔 (Drupal) 훅을 사용해 보았지만, 코멘트가 검색된 후 발생하는 hook_comment 함수 만 있습니다 (아마도이 ​​방법을 사용하는 좋은 방법이있을 수 있지만 마음이 없어졌다).

제안 사항? 특정 사용자의 댓글을 숨기고 싶지만 게시하도록 허용하는 것이 좋습니다. 그러나, 나는 이미 가지고있는 것을 가지고 일할 필요가있다.

답변

1

이 문제를 해결할 방법을 생각할 수 있지만 가장 좋은 해결책은 아닙니다.

  1. 자신의 권한으로 맞춤 모듈을 만듭니다.
  2. 댓글을 렌더링하는 데 사용되는 표준 테마 기능을 덮어 씁니다. 주석 개체를 사용할 수 있어야합니다. 따라서 주석이 익명 사용자 또는 등록 된 사용자가 제공 한 것인지 쉽게 확인할 수 있어야하며 사용자가 볼 수 있어야하는 주석을 확인할 수 있어야합니다.

주석이 스레드 될 수 있으므로 이론적으로 스레드의 주석이 누락되어 가능한 다른 버그가 발생할 가능성이 있습니다.

하지만 내가 말했듯이, 이것은 당신이 가진 것으로, 빠르고 더러운 수정입니다.

+0

응답 해 주셔서 감사합니다. 사용자 정의 모듈 접근법을 사용하고 hook_db_rewrite_sql()을 사용하여 (내가 계속 잊어 버림) 주석 쿼리에 몇 가지 추가 조건을 추가합니다. 나는 우리가 아마 나중에 단계에서 사이트를 다시 테마화할 예정이므로 모듈과 템플리트 모두에서이 모든 것을 유지하려고합니다. 스레드 된 주석에 문제가 있어서는 안되지만 마음에 두어야 할 좋은 지적입니다. – drmonkeyninja

0

정확히 이것을 달성하기 위해 댓글 검토 대기열을 사용할 수 없습니까? 주석 모듈에 대한 설정을 확인하십시오 (admin/content/comment).

익명 사용자가 사용자가 로그인했는지 여부를 확인하고 댓글이 아닌 경우 댓글을 표시하기 만하면되는 익명 사용자에게 템플릿 template.php를 설정할 수 있습니다.

예 : 상단에 귀하의 comment.tpl.php에서 다음

function mytheme_preprocess_comment(&$vars, $hook) { 
    global $user; 
    if (!$user->uid) { 
    unset($vars); 
    } 
} 

: 당신이하지 않도록

if (isset($content)) :

는, 코멘트가 설정되어 있는지 확인하려면 빈 div를 많이 렌더링합니다.

이 작업을 수행하는 더 좋은 방법은 anon 사용자에 대한 주석을 전혀로드하지 않도록 후크를 사용하는 것이지만이 코드는 많은 작업을하지 않고도 작업을 수행 할 것입니다.

+1

내가 누락 된 정보가 없으면 인증 된 사용자가 익명 사용자가 작성한 댓글을 볼 수 없습니다. – googletorp

+0

검토 대기열을 사용하여 제어 할 수 있습니다. 관리자 사용자는 모두를 볼 수 있으며 인증 사용자는 승인 된 것으로 보이고 익명 사용자에게는 none 만 표시됩니다. 인증 된 사용자에게 '승인없이 코멘트 게시'권한을 부여합니다. – cam8001