繁体   English   中英

根据Drupal中的角色控制显示哪些评论

[英]Controlling which comments are shown based on role in Drupal

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

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

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

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

我可以想到一种解决此问题的方法,但这不是最漂亮的解决方案。

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

现在存在一些问题,因为可以对注释进行线程化,因此从理论上讲,线程中的注释可能会丢失,从而导致混乱和其他错误。

但是就像我说的,这是一个快速而又肮脏的解决方案,它具有您所得到的。

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

毫无疑问,有更好的方法可以执行此操作,其中包括使用钩子避免为匿名用户完全加载注释,但是此代码可以完成很多工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM