Comment puis-je obtenir l'ID de groupe d'un nœud?

9

J'ai ce nœud qui appartient à un groupe, et je veux obtenir l'ID de groupe de ce nœud, l'imprimer, quelque chose comme $node->nid;mais avec l'ID de groupe.

Est-ce possible?

Rosamunda
la source

Réponses:

11

La relation entre le contenu d'un groupe et un groupe se fait via une relation d'appartenance. Puisqu'il est possible que le contenu d'un groupe soit membre de plusieurs groupes, le code suivant récupérera la liste des groupes:

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

Il s'agit d'un tableau multidimensionnel avec le groupe entity_types comme clé et les appartenances comme valeur. Chaque appartenance est un tableau dont l'ID d'appartenance est la clé puis l'ID d'entité du groupe comme valeur. Donc, pour passer d'un nœud de contenu de groupe à tous ses parents de groupe, vous utiliseriez ...

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
la source
Salut pouvez-vous s'il vous plaît dire comment faire cela, si j'utilise le module de groupe avec Drupal 7? Je n'ai pas trouvé de réponse
badiya
4

J'avais besoin de ça hier soir. A fait ça:

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

$ og_groups contient un tableau de tous les OG dont un post est membre. Vous pouvez les obtenir tous avec un foreach. La clé pour y accéder est le nid.

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

J'espère que cela pourra aider.

RubenVarela
la source
3

Le og(organic groups)module ajoute un entity refrencechamp aux types de contenu que vous souhaitez être groupou être group content. par défaut, le nom du champ est og_group_refmais peut-être qu'il change pour un autre nom. Si vous voulez connaître exactement le nom du champ, veuillez consulter le champ de gestion de votre type de contenu (supposons le type de contenu de votre article considéré) admin/structure/types/manage/article/fields.
Choisissez le champ de groupe NOM DE LA MACHINE (quelque chose comme og_group_ref).

Vous pouvez quelque chose comme ça:

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

Découvrez le gid puis essayez d'imprimer tout l'objet $ node, quelque chose comme:

  print_r ($ node);  

Une raison pour laquelle les réponses Drupal n'afficheront rien dans les balises php, mais vous devriez envelopper le php en pré pour rendre la sortie plus lisible.

Essayez ctrl + F et trouvez où le nombre est sorti. Vous pouvez ensuite suivre le format des tableaux / objets pour l'imprimer lorsque $ node est disponible.

WestieUK
la source