web-dev-qa-db-ja.com

ネストされたすべてのメニューリンクをDrupal 7に表示

ネストされたすべてのリンクを<ul><li>形式でDrupal 7で表示するにはどうすればよいですか?デフォルトコードでは、Drupalネストされた管理メニュー:

<?php if ($main_menu): ?>
<div id="mainmenu"> <?php print theme( 'links__system_main_menu', array('links' => $main_menu) ); ?> </div>
<?php endif; ?>

Ffには第1レベルのみが表示されます。メニュー設定:

-Fruits
---Apples
---Oranges
---Lemons
-Cars
---Big car
---Small car
---Fucked up car
-Whatever
6
enchance

_$main_menu_のデフォルトの_page.tpl.php_変数は、メインメニューツリーのコンテキストビューである menu_main_menu() に設定されます。

目的の出力を取得するには、 menu_tree_all_data() および menu_tree_output() を使用してメニューツリー全体を取得する必要があります。

テーマでこれを行うには、まだ作成していない場合は_template.php_を作成し、ページテンプレートに新しい前処理関数を追加します。

_function THEMENAME_preprocess_page(&$variables) {
  // Get the entire main menu tree
  $main_menu_tree = menu_tree_all_data('main-menu');

  // Add the rendered output to the $main_menu_expanded variable
  $variables['main_menu_expanded'] = menu_tree_output($main_menu_tree);
}
_

次に、_page.tpl.php_では、次のように使用できます。

_<?php print render($main_menu_expanded); ?> 
_

メインメニューの展開されたネストされた順序なしリストを取得します。

もう少し柔軟性を得るには、 Menu Block モジュールを検討することをお勧めします。これにより、Expand all childrenを使用して、ボックスから拡張メニューのブロックを作成できます。このツリーオプションのほか、メニューツリーをセグメント化するための他のオプションのホスト。

23
user7

また、メニューの必要な部分を示すカスタマイズされたブロックを任意の量作成できるmenu_blockモジュールもあります。

0
Dmitry Vyal