遍历所有页面并在单个html文件中输出

时间:2018-06-25 13:52:17

标签: drupal drupal-8

我需要将包含子节点的节点(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

我现在想知道如何渲染给定的节点?

1 个答案:

答案 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);

}