Come posso ottenere l'ID di gruppo di un nodo?


9

Ho questo nodo che appartiene a un gruppo e voglio ottenere l'ID di gruppo di quel nodo, per stamparlo, qualcosa di simile $node->nid;ma con l'ID del gruppo.

È possibile?

Risposte:


11

La relazione tra il contenuto del gruppo e un gruppo avviene tramite una relazione di appartenenza. Poiché è possibile che il contenuto del gruppo sia membro di più gruppi, il seguente codice recupererà l'elenco dei gruppi:

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

Questa è una matrice multidimensionale con il gruppo entity_types come chiave e le appartenenze come valore. Ogni appartenenza è un array con l'id dell'appartenenza come chiave e quindi l'ID entità del gruppo come valore. Quindi per passare da un nodo di contenuto di gruppo a tutti i suoi genitori di gruppo dovresti usare ...

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);          
    }
  }
}

Ciao, puoi dirmi come fare se sto usando il modulo Group insieme a Drupal 7? Non ho trovato una risposta
badiya

4

Ne avevo bisogno l'ultima notte. Ti è piaciuto così:

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

$ og_groups contiene un array di tutte le OG di cui un post è membro. Potresti prenderli tutti con una foreach. La chiave per accedervi è il nid.

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

Spero che aiuti.


3

Il og(organic groups)modulo aggiunge un entity refrencecampo ai tipi di contenuto che vuoi essere un groupo un group content. per impostazione predefinita il nome del campo è og_group_refma forse cambia in un altro nome. Se vuoi scoprire esattamente il nome del campo og, consulta il campo di gestione del tipo di contenuto (supponiamo che il tipo di contenuto dell'articolo considerato) admin/structure/types/manage/article/fields.
Raccogli il campo del gruppo NOME MACCHINA (qualcosa del genere og_group_ref).

Puoi qualcosa come questo:

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

2

Scopri il gid quindi prova a stampare l'intero oggetto $ node, qualcosa del tipo:

  print_r ($ node);  

Alcuni motivi per cui le risposte di Drupal non visualizzeranno nulla nei tag php, ma dovresti racchiudere il php in pre per rendere l'output più leggibile.

Prova ctrl + F e trova dove viene emesso il numero. È quindi possibile seguire il formato degli array / oggetti per stamparlo quando $ node è disponibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.