如何获取节点的组ID?


9

我有一个属于组的节点,我想获取该节点的组ID进行打印,类似$node->nid;但带有组ID。

那可能吗?

Answers:


11

组内容和组之间的关系是通过成员关系来实现的。由于组内容可能是多个组的成员,因此以下代码将检索组列表:

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

这是一个多维数组,其组entity_types为键,成员资格为值。每个成员资格都是一个数组,其成员资格ID作为键,然后是组的实体ID作为值。因此,要从组内容节点转到所有要使用的组父节点...

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

嗨,如果我将Group模块和Drupal 7一起使用,您能告诉我怎么做吗?我没有找到答案
badiya

4

我昨晚需要这个。这样吗:

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

$ og_groups包含帖子所属的所有OG的数组。您可以使用foreach将它们全部获取。进入它们的关键是形象。

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

希望能有所帮助。


3

og(organic groups)模块添加entity refrence你想要字段内容类型是一个group或者是group content。默认情况下,字段名称为,og_group_ref但可能会更改为其他名称。如果您想确切地找到字段名称,请查看您的内容类型管理字段(假设您考虑的文章内容类型)admin/structure/types/manage/article/fields
提取组字段“ 机器名称”(类似og_group_ref)。

您可以这样:

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

2

找出gid,然后尝试打印整个$ node对象,例如:

  print_r($ node);  

有些原因Drupal答案将不会在php标记中显示任何内容,但是您应该将php包装在pre中,以使输出更具可读性。

尝试按Ctrl + F,然后找到数字的输出位置。然后,当$ node可用时,您可以遵循数组/对象的格式进行打印。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.