Como posso obter o ID do grupo de um nó?

9

Eu tenho esse nó que pertence a um grupo e quero obter o ID do grupo desse nó, para imprimi-lo, algo parecido $node->nid;com o ID do grupo.

Isso é possível?

Rosamunda
fonte

Respostas:

11

O relacionamento entre o conteúdo do grupo e um grupo é por meio de uma relação de associação. Como é possível que o conteúdo do grupo seja membro de vários grupos, o código a seguir recuperará a lista de grupos:

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

Essa é uma matriz multidimensional com o grupo entity_types como chave e associações como valor. Cada associação é uma matriz com o ID da associação como chave e, em seguida, a ID da entidade do grupo como valor. Então, para ir de um nó de conteúdo de grupo, para todos os pais do grupo, você usaria ...

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
fonte
Oi, você pode dizer como fazer isso, se eu estiver usando o módulo de grupo junto com o Drupal 7? Não encontrei uma resposta
badiya 31/01
4

Eu precisava disso ontem à noite. Fez assim:

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

$ og_groups contém uma matriz de todos os OG dos quais uma postagem é membro. Você poderia pegá-los todos com um foreach. A chave para acessá-los é o nid.

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

Espero que ajude.

RubenVarela
fonte
3

O og(organic groups)módulo adiciona entity refrencecampo aos tipos de conteúdo que você deseja que seja groupou que seja group content. por padrão, o nome do campo é, og_group_refmas talvez ele mude para outro nome. Se você deseja descobrir exatamente o nome do campo, consulte o campo de gerenciamento do tipo de conteúdo (suponha que seja o tipo de conteúdo do artigo considerado) admin/structure/types/manage/article/fields.
Escolha o campo do grupo NOME DA MÁQUINA (algo assim og_group_ref).

Você pode algo como isto:

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

Descubra o gid e tente imprimir o objeto $ node inteiro, algo como:

  print_r ($ node);  

Por algum motivo, as respostas do Drupal não exibirão nada nas tags php, mas você deve colocar o php no pré para tornar a saída mais legível.

Tente ctrl + F e encontre onde o número é gerado. Você pode seguir o formato das matrizes / objetos para imprimi-lo quando $ node estiver disponível.

WestieUK
fonte