我需要将包含子节点的节点(ID 2334)输出到单个文档中,以便以后打印。
如何加载所有子节点并将其输出到主节点下?
更新
我正在使用Drupal 8。
我想将给定节点的所有子站点合并到一个页面中。
我指的是子节点/子站点。
主要目标是拥有整个网站部分的可打印版本。 就像将所有相关文章合并到一个页面中的类别一样。
更新2
我创建了一个自定义页面控制器,并设法获得了一个“子节点”数组:
$subnodes = [];
$tree = \Drupal::menuTree()->load('internal', new \Drupal\Core\Menu\MenuTreeParameters());
foreach ($tree as $item) {
if ($item->link->getRouteParameters()['node'] == $node) {
foreach($item->subtree as $subitem) {
$subnodes[] = $subitem->link->getRouteParameters()['node'];
}
}
}
var_dump($subnodes); // array of ids
我现在想知道如何渲染给定的节点?
答案 0 :(得分:0)
我设法通过自定义控制器解决了该问题:
public function exportAll($node) {
$node = (int)$node;
if ($node < 1) {
throw new NotFoundHttpException($node . 'not available');
}
$subnodes = [$node];
$tree = \Drupal::menuTree()->load('internal', new \Drupal\Core\Menu\MenuTreeParameters());
foreach ($tree as $item) {
if ($item->link->getRouteParameters()['node'] == $node) {
foreach($item->subtree as $subitem) {
$subnodes[] = $subitem->link->getRouteParameters()['node'];
}
}
}
$nodes = \Drupal\node\Entity\Node::loadMultiple($subnodes);
return $build = \Drupal::entityTypeManager()->getViewBuilder('node')->viewMultiple($nodes);
}