1

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

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

我已经研究过使用一些 Drupal 钩子,但据我所见,只有在检索到评论后才会出现 hook_comment 函数(也许有一个很好的方法来利用它,但我的大脑一片空白)。

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

4

2 回答 2

1

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

  1. 使用您自己的权限创建自定义模块。
  2. 覆盖用于呈现评论的标准主题函数。您应该有可用的评论对象,因此应该很容易查看评论是来自匿名用户还是注册用户,并且可以检查用户应该能够看到哪些评论。

现在这里有一些问题,因为评论可以被线程化,所以理论上,线程中的评论可能会丢失,从而导致混乱和可能的其他错误。

但就像我说的,这是一个快速而肮脏的修复,你得到了什么。

于 2010-07-02T11:06:52.723 回答
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。

毫无疑问,有更好的方法可以做到这一点,包括使用钩子来避免为匿名用户加载评论,但是这段代码不需要太多工作就可以完成这项工作。

于 2010-07-02T11:06:06.723 回答