3

チーム A、チーム B など、約 6 つの異なるグループがあります。これらのグループの 1 つのブロックを表示したいと思います。ログインしているユーザーが gid = X かどうかをチェックしてからブロックを表示するようなことを考えていました。そうすれば、ユーザーがログインしたときに関連するブロックが表示されるように、すべて異なるグループを対象とする 6 つの異なるブロックをセットアップできます。それは理にかなっていますか?どうすれば実装できますか?

4

2 に答える 2

1

正確な設定によっては、Contextモジュールが役立つようです。

これを行う方法は次のとおりです。

  1. 6 つの個別のブロックを作成する
  2. コンテキスト モジュールをダウンロードしてインストールする
  3. admin/structure/context/add で新しいコンテキストを作成します
  4. 以下のオプションのいずれかに基づいて、条件セクションに記入してください
  5. [反応] セクションに入力し、[ブロック] を追加することを選択してから、選択した条件に対して表示する正確なブロックを選択します。複数表示できますので、表示したいものを追加してください。
  6. グループごとに個別のコンテキストを作成します (合計 6 つ)。各グループごとに複数のブロックを表示できます。

新しいコンテキストを作成すると、特定のコンテキストのみの特定のブロックを表示できます。コンテキストの例では、特定のページのみ ( Pathコンテキストを介して) または特定のロールのユーザーのみ ( User roleコンテキストを介して)、または特定のノード タイプまたは特定の用語が添付されたページなどでブロックを表示しています。

あなたの場合、Organic Groups モジュールを使用してユーザー グループを実装している場合、コンテキストはそれと統合されます。つまり、コンテキストを作成すると、[条件] セクションの下に、特定のブロックを表示するオーガニック グループを選択するオプションが表示されます。「反応」セクションで表示したい正確なブロックを選択します。

それが役立つかどうかお知らせください!

于 2012-05-09T20:11:20.913 に答える
1

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 に答える