Как я могу получить идентификатор группы узла?

9

У меня есть этот узел, который принадлежит группе, и я хочу получить идентификатор группы этого узла, напечатать его, что-то вроде, $node->nid;но с идентификатором группы.

Это возможно?

Rosamunda
источник

Ответы:

11

Связь между содержимым группы и группой осуществляется через отношения членства. Поскольку групповой контент может быть членом нескольких групп, следующий код извлечет список групп:

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

Это многомерный массив с ключом group entity_types в качестве ключа и членством в качестве значения. Каждое членство является массивом с идентификатором членства в качестве ключа, а затем идентификатором объекта группы в качестве значения. Итак, чтобы перейти от узла группового контента ко всем его групповым родителям, вы бы использовали ...

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? Я не нашел ответа
бадия
4

Мне нужно было прошлой ночью. Сделал это так:

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

$ og_groups содержит массив всех OG, членом которых является сообщение. Вы можете получить их все с foreach. Ключ для доступа к ним - это nid.

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

Надеюсь, это поможет.

RubenVarela
источник
3

og(organic groups)Модуль добавить entity refrenceполе для типов контента , которые вы хотите быть groupили быть group content. по умолчанию имя поля есть, og_group_refно, возможно, оно изменится на другое имя. Если вы хотите точно узнать имя поля og, обратитесь к полю управления типом контента (предположим, что вы рассматриваете тип контента статьи) admin/structure/types/manage/article/fields.
Подберите групповое поле MACHINE NAME (что-то вроде og_group_ref).

Вы можете что-то вроде этого:

$node=node_load($nid);
$ogId=$node->og_group_ref['und'][0]['target_id'];
Юсеф
источник
2

Найдите gid и попробуйте напечатать весь объект $ node, что-то вроде:

  print_r ($ узел);  

По какой-то причине ответы Drupal не будут отображать ничего в тегах php, но вы должны обернуть php в pre, чтобы сделать вывод более читабельным.

Попробуйте Ctrl + F и найдите, где число выводится. Затем вы можете следовать формату массивов / объектов, чтобы распечатать его, когда $ node доступен.

WestieUK
источник