以编程方式从 drupal 8 获取所有节点
programmatically get all nodes from drupal 8
我正在尝试从 drupal 获取 certian 类型的所有节点。
我已经尝试了很多方法来实现这一点,但也许由于我缺乏 Drupal 自定义模块编程经验,我无法实现我的愿望。
我在网上找到的最接近的方式是:
$nids = \Drupal::entityQuery('node')->condition('type','news')->execute();
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
- 第一行returns一个object的id
- 第二行returns那些id的节点
这看起来简单明了。但是,这是输出!
{
"59": {
"in_preview": null
},
"61": {
"in_preview": null
}
}
有人可以帮忙吗,怎么了?这是正确的方法吗?
我想获取节点然后搜索每个节点(我正在制作某种搜索引擎)所以我希望有某种 object 然后我可以提取标题,body ...等,来自。这是正确的方法吗?
这实际上是returns个节点对象
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
也许您的输出只提供了最少的结果而不是对象。如果您使用适当的调试器进行检查,您将看到这些对象。
如果您希望从查询中返回太多节点,那么一次实际获取一个节点对象可能更好
$query = \Drupal::entityQuery('node')
->condition('status', 1) //published or not
->condition('type', 'news') //content type
->pager(10); //specify results to return
$nids = $query->execute();
foreach ($nids as $nid) {
$node = \Drupal\node\Entity\Node::load($nid);
$body = $node->body->value;
$title = $node->title->value;
//...
}
我正在尝试从 drupal 获取 certian 类型的所有节点。 我已经尝试了很多方法来实现这一点,但也许由于我缺乏 Drupal 自定义模块编程经验,我无法实现我的愿望。 我在网上找到的最接近的方式是:
$nids = \Drupal::entityQuery('node')->condition('type','news')->execute();
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
- 第一行returns一个object的id
- 第二行returns那些id的节点
这看起来简单明了。但是,这是输出!
{
"59": {
"in_preview": null
},
"61": {
"in_preview": null
}
}
有人可以帮忙吗,怎么了?这是正确的方法吗?
我想获取节点然后搜索每个节点(我正在制作某种搜索引擎)所以我希望有某种 object 然后我可以提取标题,body ...等,来自。这是正确的方法吗?
这实际上是returns个节点对象
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);
也许您的输出只提供了最少的结果而不是对象。如果您使用适当的调试器进行检查,您将看到这些对象。
如果您希望从查询中返回太多节点,那么一次实际获取一个节点对象可能更好
$query = \Drupal::entityQuery('node')
->condition('status', 1) //published or not
->condition('type', 'news') //content type
->pager(10); //specify results to return
$nids = $query->execute();
foreach ($nids as $nid) {
$node = \Drupal\node\Entity\Node::load($nid);
$body = $node->body->value;
$title = $node->title->value;
//...
}