3

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

4

2 回答 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模块可能会对您有所帮助。

这是你可以做到的。

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

创建新上下文允许您仅显示某些块的某些上下文。示例上下文仅在某些页面(通过路径上下文)或仅针对特定角色的用户(通过用户角色上下文)或什至在某些节点类型或附加了特定术语的页面上显示块,等等。

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

让我们知道这是否有帮助!

于 2012-05-09T20:11:20.913 回答