📜  drupal 8 获取所有类型的节点 - PHP (1)

📅  最后修改于: 2023-12-03 15:14:48.241000             🧑  作者: Mango

Drupal 8 获取所有类型的节点

当我们在 Drupal 8 中需要获取所有已经定义的节点类型时,可以使用 Drupal 8 提供的 NodeType 类和 NodeStorage 类来实现。

获取所有节点类型

以下代码片段可以获取所有的节点类型,并将它们以 $types 数组的形式返回:

$types = [];
foreach (NodeType::loadMultiple() as $type) {
  $types[$type->id()] = $type->label();
}

其中,NodeType::loadMultiple() 函数返回一个全部节点类型的列表,$type->id() 取得到节点类型的 ID,$type->label() 获取节点类型的标签文字。

获取指定节点类型的所有节点

若要获取某一特定节点类型(例如文章)的所有节点列表,可以使用 NodeStorage 类提供的 loadByProperties() 方法。以下代码片段演示了如何获取文章类型的所有节点:

$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties(['type' => 'article']);

其中,getStorage('node') 获取到实体类型“node”对应的存储类,loadByProperties(['type' => 'article']) 方法通过type 属性过滤出所有文章类型的节点。

结论

通过以上代码片段的示例,我们学会了如何使用 Drupal 的 API 获取所有节点类型以及某一特定节点类型的所有节点。这个功能在需要对节点进行自定义操作时会非常有用。