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 - 显示特定用户组的块的主要内容,如果未能解决你的问题,请参考以下文章