Управление отображением комментариев в зависимости от роли в Drupal - PullRequest
1 голос
/ 02 июля 2010

Это странный и не идеальный вариант, но в основном у нас есть сайт Drupal, который использует модуль базовых комментариев, чтобы аутентифицированные пользователи могли публиковать и просматривать комментарии для узла.Теперь нам нужно расширить это, чтобы неаутентифицированные пользователи могли также оставлять комментарии, но не просматривать их.Аутентифицированные пользователи будут иметь доступ только для просмотра комментариев других аутентифицированных пользователей.Только администраторы могут просматривать все комментарии.

Есть ли способ сделать это?Разрешения, по-видимому, не дают такой гибкости (доступ к комментариям требуется, чтобы дать пользователю форму, но показывает все утвержденные комментарии).

Я рассмотрел использование некоторых хуков Drupal, но, насколько могвидите, есть только функция hook_comment, которая происходит после того, как комментарии были получены (возможно, есть хороший способ использовать это, но мой ум остался пустым).

Есть предложения?Я ценю скрытие комментариев от определенных пользователей, но разрешать им публиковать их, вероятно, не лучшая практика;однако мне нужно работать с тем, что у нас уже есть.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Я могу придумать способ решить эту проблему, но это не самое красивое решение.

  1. Создать собственный модуль с собственными разрешениями.
  2. Перезаписать стандартную функцию темыэто используется для визуализации комментариев.У вас должен быть доступный объект комментария, поэтому должно быть довольно легко увидеть, были ли комментарии от анонимного пользователя или зарегистрированного пользователя, и можно проверить, какие комментарии должен видеть пользователь.

Теперь в этом есть несколько проблем, поскольку комментарии могут быть многопоточными, поэтому теоретически возможно, что комментарий в потоке будет отсутствовать, что приведет к путанице и другим ошибкам.

Но, как я уже сказал, этоэто быстрое и грязное исправление с тем, что вы получили.

0 голосов
/ 02 июля 2010

Не можете ли вы использовать очередь модерации комментариев, чтобы добиться именно этого?Проверьте свои настройки для модуля комментариев (в разделе admin / content / comment).

Вы можете установить в вашей теме template.php, хотите ли вы, чтобы анонимные пользователи просматривали комментарии, просто проверив, вошел ли пользователь в систему.в, и не показывая комментарий, если они не.

например:

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

Затем в вашем comment.tpl.php, вверху:

if ( isset($content) ) :

Чтобы проверить, был ли комментарий не задан, чтобы вы не отображали много пустых элементов div.

Несомненно, есть лучшие способы сделать это, включающие использование ловушки дляне загружайте комментарии для всех пользователей, но этот код сделает работу без особой работы.

...