web-dev-qa-db-ja.com

メニューツリーとは別にサブメニューを表示するにはどうすればよいですか?

メニュー項目のすべての第3レベルのサブメニューを、それぞれが独自の表示ブロックに表示しようとしています。メニューブロックモジュールを試しましたが、アクティブなトレイルでしか機能しないようです。つまり、3レベルのメニューだけを個別のユニットとして表示するのではなく、2レベルと3レベルのすべてのメニューを1つのユニットとしてしか表示できません。

メニューブロックモジュールに加えて、このコードで直接メニューツリーにアクセスしてみました。

      $main = menu_navigation_links('main-menu', '2');
      echo theme('links__system_main_menu', array(
      'links' => $main,
      'attributes' => array(
      'id' => 'main-menu',
      'class' => array('links')
    ),
  ));
?>

メニュー構造は次のとおりです。

- Parent Menu 1
- Parent Menu 2
  - Child Menu A
    - SubChild Menu 1A
    - SubChild Menu 2A
    - SubChild Menu 3A    
- Child Menu B
  - SubChild Menu 1B
  - SubChild Menu 2B
  - SubChild Menu 3B

親メニュー2を選択したときに表示する内容:

ブロック1:SubChildメニュー1A |サブチャイルドメニュー2A |サブチャイルドメニュー3A

ブロック2:サブチャイルドメニュー1B |サブチャイルドメニュー2B |サブチャイルドメニュー3B

ツリーとは別のサブメニューを表示する正しい方法についてのヘルプは、大歓迎です。

8
user1240408

私はそれを行うための最善の方法は、単に Menu block モジュールを使用することだと思います。これについての引用は次のとおりです(モジュールのプロジェクトページから):

...テーマでメインメニューリンク機能とセカンダリメニューリンク機能を使用したことがありますか。

それが、このモジュールが行うことです。これは、任意のメニューの任意のレベルで始まるメニューツリーの構成可能なブロックを提供します。もっと!

したがって、テーマのメインメニューリンク機能のみを使用している場合は、「メインメニュー(レベル2+)」ブロックを追加して構成できます。このブロックは、メインメニューのいずれかのページに移動すると表示され、メインメニューの第2レベル(およびより深い)のメニューツリーを表示し、ツリーを下に移動すると展開します。メニューのツリーの深さを制限したり(「メインメニュー(レベル2〜3)」など)、および/またはすべての子サブメニューを展開したりすることもできます(たとえば、「メインメニュー(レベル2以上の展開)」)。

5
Manuel Garcia

次のモジュールを使用できます: https://www.drupal.org/project/yamb 第2レベルのタイトルを持つ第3レベルのサブメニューを取得する。

0
Kentoro