ノードのグループIDを取得するにはどうすればよいですか?


9

私はこのノードがグループに属していて、そのノードのグループIDを取得して印刷したいのですが、グループIDが含まれています$node->nid;

それは可能ですか?

回答:


11

グループコンテンツとグループの関係は、メンバーシップ関係を介して行われます。グループコンテンツが複数のグループのメンバーである可能性があるため、次のコードはグループのリストを取得します。

$groups = og_get_entity_groups('node', $node);

これは、キーとしてグループentity_types、値としてメンバーシップを持つ多次元配列です。各メンバーシップは、キーとしてメンバーシップIDを持ち、値としてグループのエンティティIDを持つ配列です。したがって、グループコンテンツノードから、使用するすべてのグループの親に移動するには...

foreach (og_get_entity_groups('node', $node) as $entity_type => $og_memberships) {
  foreach ($og_memberships as $membership_id => $entity_id) {
    if ($entity_type == 'node') {
      // Assuming we only want to deal with node groups, we can
      // access the group node with...
      $group_node = node_load($entity_id);          
    }
  }
}

こんにちは、Drupal 7と一緒にGroupモジュールを使用している場合、これを行う方法を教えてください。答えは見つかりませんでした
badiya

4

私はこれを昨夜必要としました。次のようにしましたか:

$node = node_load($nid);
$og_id = current($node->og_groups)

$ og_groupsには、投稿がメンバーとなっているすべてのOGの配列が含まれます。あなたはそれらすべてをforeachで得ることができます。それらにアクセスするためのキーはnidです。

$og_groups=array(5=>5, 15=>15); 

お役に立てば幸いです。


3

og(organic groups)モジュールまたはにしentity refrenceたいコンテンツタイプへのモジュール追加フィールド。デフォルトではフィールド名はですが、別の名前に変更されている可能性があります。フィールド名を正確に知りたい場合は、コンテンツタイプ管理フィールドを参照してください(対象の記事のコンテンツタイプを想定します)。 グループフィールド MACHINE NAME(のようなもの)を選択します。groupgroup contentog_group_refadmin/structure/types/manage/article/fields
og_group_ref

あなたはこのようなことができます:

$node=node_load($nid);
$ogId=$node->og_group_ref['und'][0]['target_id'];

2

gidを調べて、次のような$ nodeオブジェクト全体を印刷してみてください。

  print_r($ node);  

何らかの理由でDrupalの回答ではphpタグに何も表示されませんが、出力を読みやすくするには、phpをpreでラップする必要があります。

ctrl + Fを試して、数値が出力される場所を見つけます。その後、$ nodeが使用可能になったときに、配列/オブジェクトの形式に従って出力できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.