Wie kann ich die Gruppen-ID eines Knotens erhalten?

9

Ich habe diesen Knoten, der zu einer Gruppe gehört, und ich möchte die Gruppen-ID dieses Knotens abrufen, um ihn zu drucken, etwa $node->nid;mit der Gruppen-ID.

Ist das möglich?

Rosamunda
quelle

Antworten:

11

Die Beziehung zwischen Gruppeninhalt und einer Gruppe erfolgt über eine Mitgliedschaftsbeziehung. Da Gruppeninhalte Mitglied mehrerer Gruppen sein können, ruft der folgende Code die Liste der Gruppen ab:

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

Dies ist ein mehrdimensionales Array mit der Gruppe entity_types als Schlüssel und Mitgliedschaften als Wert. Jede Mitgliedschaft ist ein Array mit der Mitglieds-ID als Schlüssel und der Entitäts-ID der Gruppe als Wert. Um von einem Gruppeninhaltsknoten zu allen Gruppeneltern zu gelangen, die Sie verwenden würden ...

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);          
    }
  }
}
John
quelle
Hallo, können Sie bitte sagen, wie das geht, wenn ich das Gruppenmodul zusammen mit Drupal 7 verwende? Ich habe keine Antwort gefunden
badiya
4

Ich brauchte das letzte Nacht. Hat es so gefallen:

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

$ og_groups enthält ein Array aller OGs, zu denen ein Beitrag gehört. Sie könnten sie alle mit einem foreach bekommen. Der Schlüssel, um auf sie zuzugreifen, ist die NID.

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

Ich hoffe, das hilft.

RubenVarela
quelle
3

Das og(organic groups)Modul fügt entity refrenceFeld zu Inhaltstypen hinzu, die ein groupoder ein sein sollen group content. Standardmäßig heißt das Feld, og_group_refaber möglicherweise ändert es sich in einen anderen Namen. Wenn Sie den Feldnamen genau herausfinden möchten, lesen Sie bitte das Feld zur Verwaltung Ihres Inhaltstyps (nehmen wir an, dass Ihr Artikelinhaltstyp berücksichtigt wird) admin/structure/types/manage/article/fields.
Nimm das Gruppenfeld MASCHINENNAME (so etwas wie og_group_ref).

Sie können so etwas:

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

Finden Sie die GID heraus und versuchen Sie, das gesamte $ node-Objekt zu drucken.

  print_r ($ node);  

Aus irgendeinem Grund zeigen Drupal-Antworten nichts in den PHP-Tags an, aber Sie sollten das PHP vorab einpacken, um die Ausgabe besser lesbar zu machen.

Versuchen Sie Strg + F und finden Sie heraus, wo die Nummer ausgegeben wird. Sie können dann dem Format der Arrays / Objekte folgen, um es zu drucken, wenn $ node verfügbar ist.

WestieUK
quelle