私の質問は、本のナビゲーションツリー全体をブロックで表示する方法についてです(Drupal 8)
@oknateのおかげで トップレベルの本を表示するBook Navigationブロックを使用できます 、しかし、ツリー全体が必要です。 (目次を考える)
以下のすべての例は、あなたが3レベルのディープブックのトップページであると想定しています。
また、 https://github.com/petergus/alt-book-nav.gitに作業モジュールがあります
書籍のナビゲーションブロックにタイトル(トップレベル)の書籍を表示するには、book/src/Plugin/Block/BookNavigationBlock.phpの次のコードを置き換えます(もちろんカスタムモジュールを使用)。
// Only show the block if the user has view access for the top-level node.
if ($nid) {
$tree = $this->bookManager->bookTreeAllData($node->book['bid'], $node->book);
// There should only be one element at the top level.
$data = array_shift($tree);
$below = $this->bookManager->bookTreeOutput($data['below']);
if (!empty($below)) {
return $below;
}
}
と
if ($nid) {
$tree = $this->bookManager->bookTreeAllData($node->book['bid'], $node->book);
return $this->bookManager->bookTreeOutput($tree);
}
ただし、トップレベルと子レベルしか表示されないので、どのページからでもツリー全体を表示できるようにしたいと考えています。
私はdrupal 8で完全に新しく、PHPであまり便利ではないので、
$tree = $this->bookManager->bookTreeAllData($node->book['bid'], $node->book);
kint($tree);
本の名前と第1レベルのみを返し、
$tree = $this->bookManager->bookTreeAllData($node->book['bid']);
kint($tree);
($node->book
なし)は、複数のレベル、つまり複数の「下」配列を返します。
その情報をブロックに引き込む方法を私は知りません、誰か?
上記のように、@ oknateが https://github.com/petergus/alt-book-nav.git で提案したモジュールがあります。
どんな助けにも感謝し、この質問がコミュニティに役立つことを願っています。
私はすでに質問の回答を投稿しましたが、テスト中になんとかそれを逃しました!
$tree = $this->bookManager->bookTreeAllData($node->book['bid'], $node->book);
から, $node->book
を削除すると、展開されたツリー全体が印刷されます。
誰かが ユーザーフォームオプションを追加する を モジュール に追加する時間がある場合、最終的に多くの人に利益をもたらし、drupal.orgリポジトリにアクセスできます。