如何以编程方式将内容类型文章的所有节点添加到 drupal 8 中的一个组?

How to programically add all the nodes of content type article to one group in drupal 8?

我正在寻找一种解决方案,将内容类型文章的所有节点添加到组 id=25 的组中,有没有办法通过 PHP 代码将它们添加一次,我听说过这个功能在群组中添加内容,但我不知道如何使用它,请帮助我

Group::addContent(ContentEntityInterface $entity, $plugin_id, $values = [])

如何使用以上功能?

有什么方法可以一步到位吗?

Group::addContent(ContentEntityInterface $entity, $plugin_id, $values = [])

我需要将文章的所有内容类型分组为 gid=25

可能会有帮助

$group->addContent($entity, 'group_node:article');

plugin_id其实就是节点类型

请尝试一下。

让我试着解释更多

使用Drupal\node\Entity\Node; 使用 Drupal\group\Entity\Group;

/**
* Implements hook_ENTITY_TYPE_insert().
*/
function yourmodulename_node_insert(Node $node) {
  if ($node->bundle() == 'article') {
    $pluginId = 'group_node:article';
    // Here create some logic to load/chose the group id's you want to 
    // add the content to
    // ... 
    foreach ($group_ids as $gid) {
      $group = Group::load($gid);
      $group->addContent($node, $pluginId);
    }
  }
}

我希望它会更清楚,foreach意味着你可以添加到多个组所以这里你可以尝试自己的逻辑你想添加到哪个组,希望它有意义。