【问题标题】:Iterate through all pages and output in a single html file遍历所有页面并在单个 html 文件中输出
【发布时间】:2018-06-25 13:52:16
【问题描述】:

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

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

【问题讨论】:

    标签: drupal drupal-8


    【解决方案1】:

    我设法用自定义控制器解决了这个问题:

    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);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 2015-09-14
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      相关资源
      最近更新 更多