¿Cómo puedo obtener la ID de grupo de un nodo?

9

Tengo este nodo que pertenece a un grupo, y quiero obtener la ID del grupo de ese nodo, para imprimirlo, algo así como $node->nid;con la identificación del grupo.

¿Es eso posible?

Rosamunda
fuente

Respuestas:

11

La relación entre el contenido del grupo y un grupo es a través de una relación de membresía. Como es posible que el contenido del grupo sea miembro de varios grupos, el siguiente código recuperará la lista de grupos:

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

Esta es una matriz multidimensional con el grupo entity_types como clave y las membresías como valor. Cada membresía es una matriz con la identificación de la membresía como clave y luego la identificación de la entidad del grupo como valor. Entonces, para pasar de un nodo de contenido grupal a todos los padres grupales que usaría ...

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);          
    }
  }
}
Juan
fuente
Hola, ¿puedes decir cómo hacer esto si estoy usando el módulo de grupo junto con Drupal 7? No encontré una respuesta
badiya
4

Necesitaba esto anoche. Lo hizo así:

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

$ og_groups contiene una matriz de todos los OG de los que es miembro una publicación. Podrías conseguirlos a todos con un foreach. La clave para acceder a ellos es el nid.

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

Espero que ayude.

RubenVarela
fuente
3

El og(organic groups)módulo agrega entity refrencecampo a los tipos de contenido que desea ser a groupo be a group content. por defecto el nombre del campo es og_group_refpero tal vez cambie a otro nombre. Si desea averiguar exactamente el nombre del campo og, consulte el campo de administración de su tipo de contenido (supongamos que considera el tipo de contenido del artículo) admin/structure/types/manage/article/fields.
Seleccione el campo del grupo NOMBRE DE LA MÁQUINA (algo así como og_group_ref).

Tu puedes algo como esto:

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

Descubra el gid y luego intente imprimir todo el objeto $ node, algo así como:

  print_r ($ nodo);  

Por alguna razón, las respuestas de Drupal no mostrarán nada en las etiquetas php, pero debe ajustar el php en pre para que la salida sea más legible.

Pruebe ctrl + F y encuentre dónde se emite el número. Luego puede seguir el formato de las matrices / objetos para imprimirlo cuando $ node esté disponible.

WestieUK
fuente