Jak mogę uzyskać identyfikator grupy węzła?

9

Mam ten węzeł, który należy do grupy, i chcę uzyskać identyfikator grupy tego węzła, aby go wydrukować, podobnie jak $node->nid;z identyfikatorem grupy.

Czy to jest możliwe?

Rosamunda
źródło

Odpowiedzi:

11

Relacja między zawartością grupy a grupą odbywa się poprzez relację członkowską. Ponieważ możliwe jest, aby zawartość grupy była członkiem wielu grup, następujący kod pobierze listę grup:

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

Jest to wielowymiarowa tablica z grupą typ_obiektu jako kluczem i członkostwem jako wartością. Każde członkostwo to tablica z identyfikatorem członkostwa w miarę wpisywania, a następnie identyfikatorem jednostki grupy jako wartością. Aby przejść od węzła treści grupy do wszystkich jego rodziców, których użyłbyś ...

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);          
    }
  }
}
Jan
źródło
Cześć, możesz mi powiedzieć, jak to zrobić, jeśli korzystam z modułu Grupy wraz z Drupalem 7? Nie znalazłem odpowiedzi
badiya
4

Potrzebowałem tej ostatniej nocy. Czy to tak:

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

$ og_groups zawiera tablicę wszystkich OG, do których należy post. Możesz zdobyć je wszystkie z foreach. Kluczem do nich jest nid.

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

Mam nadzieję, że to pomaga.

RubenVarela
źródło
3

og(organic groups)Moduł add entity refrencepole do typów zawartości chcesz być grouplub być group content. domyślnie nazwa pola to, og_group_refale może zmieni się na inną nazwę. Jeśli chcesz dokładnie znaleźć nazwę pola og, zobacz pole zarządzania typem zawartości (załóżmy, że rozważasz typ zawartości artykułu) admin/structure/types/manage/article/fields.
Podnieś pole grupy NAZWA MASZYNY (coś takiego og_group_ref).

Możesz coś takiego:

$node=node_load($nid);
$ogId=$node->og_group_ref['und'][0]['target_id'];
Yusef
źródło
2

Znajdź gid, a następnie spróbuj wydrukować cały obiekt $ node, coś w stylu:

  print_r ($ node);  

Z jakiegoś powodu odpowiedzi Drupala nie wyświetlą niczego w tagach php, ale powinieneś owinąć php w pre, aby wynik był bardziej czytelny.

Spróbuj ctrl + F i sprawdź, gdzie jest wyprowadzana liczba. Następnie możesz postępować zgodnie z formatem tablic / obiektów, aby wydrukować go, gdy dostępny jest $ node.

WestieUK
źródło