Drupal における breadcrumb

Drupal で breadcrumb はどういう位置づけになっているのだろうか?Menu and breadcrumb customising | Drupal.org などのような不要論すら存在する.

  • まず /usr/share/drupal/modules にて grep breadcrumb */*.module としてみると,blog, book, forum, menu, taxonomy でヒットする.
    • book の outline にノードを参加させると breadcrumb が表示される.
    • taxonomy の term を割り当ててもノードの表示の際には表示されない.term のページには表示される.
    • 自分でメニューを作成し,それにノードを設定すると breadcrumb が表示される.
  • /usr/share/drupal/includes の common.inc, menu.inc あたりを調べてみる.
function drupal_get_breadcrumb() {
  $breadcrumb = drupal_set_breadcrumb();

  if (is_null($breadcrumb)) {
    $breadcrumb = menu_get_active_breadcrumb();
  }

  return $breadcrumb;
}
  • というようになっていて,他に何もセットされていないときにはメニューが検索されて breadcrumb が設定されるようだ.
  • ただ,book と menu に同時に指定すると menu が優先された.どのタイミングで drupal_set_breadcrumb() がモジュールから呼ばれるかは不明である.
  • そもそもサイトを階層化して構成するにはどうすればよいか調べていて,taxonomy_breadcrumb やら,taxonomy_menu やら taxonomy_context やらのモジュールを使うようだと主張する人が多かったのだが,完全に静的な階層構造なら単にメニューを作って一個ずつ指定していけば何もモジュールなど使わなくても可能である.