根据Drupal中的角色控制显示哪些注释

时间:2010-07-02 10:48:34

标签: drupal drupal-6 drupal-comments

这是一个奇怪的,并不理想,但基本上我们有一个Drupal站点,它一直使用核心注释模块,允许经过身份验证的用户发布和查看节点的注释。我们现在需要对此进行扩展,以便未经身份验证的用户也可以发布评论,但不能查看评论。经过身份验证的用户只能访问其他经过身份验证的用户查看评论。只有管​​理员用户才有权查看所有评论。

有没有办法做到这一点?权限似乎不允许这种灵活性(需要访问注释才能向用户提供表单,但显示所有已批准的注释)。

我已经研究过使用一些Drupal钩子,但据我所知,只有在检索到注释后才会出现hook_comment函数(也许有一种很好的方法可以利用它,但我的想法已经空白了。

有什么建议吗?我很欣赏隐藏某些用户的评论,但允许他们发布这些评论可能不是最佳做法;但是,我需要使用我们已经拥有的东西。

2 个答案:

答案 0 :(得分:1)

我可以想办法解决这个问题,但这不是最漂亮的解决方案。

  1. 使用您自己的权限创建自定义模块。
  2. 覆盖用于呈现注释的标准主题函数。您应该有可用的评论对象,因此应该很容易看到评论是来自匿名用户还是注册用户,并且可以检查用户应该能够看到哪些评论。
  3. 现在有一些问题,因为评论可以是线程化的,所以从理论上讲,线程中的注释可能会丢失,从而导致混淆和其他可能的错误。

    但就像我说的那样,这是一个快速而肮脏的解决方案,你得到了什么。

答案 1 :(得分:0)

您是否可以使用评论审核队列来实现这一目标?检查评论模块的设置(在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。

毫无疑问,更好的方法是使用钩子来避免为匿名用户加载评论,但这段代码可以完成这项工作而无需太多工作。