代码之家  ›  专栏  ›  技术社区  ›  drmonkeyninja

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

  •  1
  • drmonkeyninja  · 技术社区  · 16 年前

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

    我已经研究过如何使用一些Drupal钩子,但据我所知,只有钩子注释函数出现在注释被检索之后(也许有一种很好的方法可以利用它,但我的脑子已经一片空白)。

    有什么建议吗?我很欣赏对某些用户隐藏评论,但允许他们发表评论可能不是最佳做法;然而,我需要用我们已经有的东西来工作。

    2 回复  |  直到 13 年前
        1
  •  1
  •   googletorp    16 年前

    我能想出解决这个问题的办法,但这不是最漂亮的办法。

    1. 覆盖用于呈现注释的标准主题函数。您应该可以使用comment对象,这样就可以很容易地看到评论是来自匿名用户还是注册用户,并且可以检查用户应该能够看到哪些评论。

    但正如我所说,这是一个快速和肮脏的解决办法,与你所得到的。

        2
  •  0
  •   cam8001    16 年前

    您可以在theme template.php中设置是否希望匿名用户查看评论,只需检查用户是否已登录,如果未登录,则不显示评论。

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

    if ( isset($content) ) :

    检查注释是否已取消设置,这样就不会呈现大量空div。

    毫无疑问,有更好的方法可以做到这一点,包括使用一个钩子来避免为其他用户加载注释,但是这段代码不用做很多工作就可以完成这项工作。