我有大约 6 个不同的组,例如 Team A、Team B 等。我想为其中一个组显示一个块。正在考虑检查登录用户是否 gid = X 然后显示块。这样我可以设置 6 个不同的块,它们都针对不同的组,这样当用户登录时,它将为他们显示相关的块。那有意义吗?我将如何实施它?
问问题
1290 次
2 回答
1
经过一个多星期的研究和玩耍,我找到了一点代码,并在下面将其修改为我需要的。
<?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; ?>
于 2012-05-15T22:38:13.740 回答
1
根据您的具体设置,看起来Context模块可能会对您有所帮助。
这是你可以做到的。
- 创建您的 6 个单独的块
- 下载并安装上下文模块
- 在 admin/structure/context/add 创建一个新的上下文
- 根据以下我的选项之一填写条件部分
- 填写反应部分,选择添加“块”,然后选择要为所选条件显示的确切块。您可以显示多个,因此请添加您想要显示的任何内容。
- 为每个组创建一个单独的上下文(总共 6 个)。您可以为每个组显示多个块。
创建新上下文允许您仅显示某些块的某些上下文。示例上下文仅在某些页面(通过路径上下文)或仅针对特定角色的用户(通过用户角色上下文)或什至在某些节点类型或附加了特定术语的页面上显示块,等等。
在您的情况下,如果您使用 Organic Groups 模块来实现您的用户组,则上下文将与之集成。这意味着当您创建上下文时,“条件”部分下将有一个选项来选择您要为其显示某些块的有机组。您选择要在“反应”部分中显示的确切块。
让我们知道这是否有帮助!
于 2012-05-09T20:11:20.913 回答