Drupal - 显示特定用户组的块

Posted

技术标签:

【中文标题】Drupal - 显示特定用户组的块【英文标题】:Drupal - Display a block for a specific user group 【发布时间】:2012-05-08 04:46:20 【问题描述】:

我有大约 6 个不同的组,例如团队 A、团队 B 等。我想为其中一个组显示一个块。正在考虑检查登录用户是否 gid = X 然后显示块。这样我可以设置 6 个不同的块,它们都针对不同的组,这样当用户登录时,它将为他们显示相关的块。那有意义吗?我将如何实现它?

【问题讨论】:

你使用哪个版本的drupal核心?! 对不起,我应该提到,D7需要它 【参考方案1】:

根据您的具体设置,Context 模块似乎可以帮助您。

您可以这样做。

    创建 6 个独立的块 下载并安装上下文模块 在 admin/structure/context/add 处创建新上下文 根据我的以下选项之一填写条件部分 填写反应部分,选择添加“块”,然后选择要针对所选条件显示的确切块。您可以显示多个,因此请添加您想要显示的任何内容。 为每个组创建一个单独的上下文(总共 6 个)。您可以为每个组显示多个块。

创建一个新的上下文允许您只为某些上下文显示某些块。示例上下文仅在某些页面(通过 Path 上下文)或仅针对特定角色的用户(通过 User role 上下文)甚至在某些节点类型上显示块或在附加了特定术语的页面上等。

在您的情况下,如果您使用 Organic Groups 模块来实现您的用户组,上下文将与之集成。这意味着当您创建上下文时,“条件”部分下将有一个选项来选择您要为其显示某些块的有机组。您可以选择要在“反应”部分中显示的确切块。

如果有帮助,请告诉我们!

【讨论】:

您好 Boriana,感谢您的回复。我知道上下文模块并将 if 用于我的大多数站点,并且正在将其用于此设置。我在您的解决方案中看到的问题是上下文不允许您选择已创建的单个组,只能选择组类型。我需要针对一种类型中的每个单独的组。如果我错了并且事实上它可以做到这一点,那么我的设置可能有问题或者我遗漏了一些东西,如果你有任何可能对我有帮助的额外信息,我会很高兴。谢谢【参考方案2】:

经过一个多星期的研究和玩弄,我找到了一点代码,并在下面将其修改为我需要的。

<?php 
   global $user;
   $uid = $user->uid;
   $result = db_query ( "SELECT * FROM og_membership
   WHERE etid = :uid
   and entity_type = 'user'
   order by gid DESC", array (':uid' => $uid ) );

   foreach ( $result as $row ) 
     $gid = $row->gid;
     break; 
   
?>    

<?php if ($gid == "GROUP ID HERE"): ?>

(load block here)

<?php endif; ?>

【讨论】:

以上是关于Drupal - 显示特定用户组的块的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7 - 有没有办法在列表中显示特定的组?

Drupal 7 视图中的块中暴露的过滤器

使用 drupal 参数(又名“if 语句”)显示特定字段

Drupal - 展示一个节点

Drupal 视图 - 根据 URL 过滤内容

Drupal:显示匿名用户但未经过身份验证的用户的重复内容的视图