私は現在、URLパスで親メニュー項目を検索し、最上位の親を検索して関連メニューの現在のツリー構造を表示するモジュールに取り組んでいます。最も重要なのは、そのメニュー項目とそのメニュー内のサブメニューのみを表示することです。
簡単な解決策は、すべてのアイテムを介してforeachループを作成するか、すべてのアイテムをキーとして持つ配列を作成することです。
path = '/system/menu/submenu';
parent = 'system';
output = parent + parent submenus.
「カスタムメニュー」のすべてのメニュー項目:
- System
- Menu wrapper
- SubMenu 1A
- SubMenu 2A
- SubMenu 3A
- Main
- SubMenu 1B
- SubMenu 2B
- SubChildMenu 3B
PHPコードはこれを返す必要があります:
- System
- Menu wrapper
- SubMenu 1A
- SubMenu 2A
- SubMenu 3A
私のコード(現在は機能していません):
$menu = menu_tree('my-custom-menu');
return = theme('my_custom_menu', array('system' => $menu_tree));
注意:これはphpコードとphpコードのみである必要があります。他のすべてのモジュールは、手動選択によってのみこれをサポートしていません。コンテンツはブロックを介して表示されます。
「ナビゲーションの場合、Drupalはmenu_navigation_linksを介してmenu_tree_page_dataを呼び出します。 これにより、単一レベルのリンクのみが返されます。この関数をmenu_main_menuまでたどり、その前にtemplate_preprocess_pageをたどることができます(これがpage.tpl.phpの変数として終了します)。 )。
ただし、メニューをブロックとして挿入すると、menu_tree_page_dataはmenu_treeによって呼び出されます(これはすぐにmenu_tree_outputを呼び出し、その後、最終的なマークアップのために配列に追加の作業を行います)。両方を実行すると、メニューツリー全体を配列として使用できるようになります。次に、カスタムPHPコードを実行して、配列をループし、HTMLリストにレンダリングしました。」
人々は以前にこれを尋ねましたが、私は彼らの解決策を試しました、そして成功の考えられる原因はそれらの質問がdrupal6のためであるということではありません。私は現在drupal7で働いています。
あなたの助けは非常にありがたいです、ありがとう...
関連する質問:
drupalで特定の親の下にあるすべてのメニュー項目を取得するにはどうすればよいですか?
https://drupal.stackexchange.com/questions/30112/displaying-a-menus-child-links