web-dev-qa-db-ja.com

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

グループに属しているこのノードがあり、そのノードのグループIDを取得して印刷したいのですが、$node->nid;のようなものですが、グループIDが含まれています。

それは可能ですか?

9
Rosamunda

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

$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);          
    }
  }
}
11
John

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

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

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

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

お役に立てば幸いです。

4
RubenVarela

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

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

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

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

  print_r($ node); 

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

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

2
WestieUK