📅  最后修改于: 2023-12-03 15:14:48.241000             🧑  作者: Mango
当我们在 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 获取所有节点类型以及某一特定节点类型的所有节点。这个功能在需要对节点进行自定义操作时会非常有用。