web-dev-qa-db-ja.com

言語でmenu_tree_all_data()ツリーをフィルタリングしますか?

私のサイトは複数の言語を使用しており、プログラムでメニューツリーを取得するために menu_tree_all_data() を使用しています。現在、すべてのノードとその変換されたノードは同じメニューツリーを使用しています。

メニューブロックを使用する場合、表示されるメニューは、ユーザーが使用しているサイトの言語バージョンによってフィルタリングされます。どっちがいい。

プログラムでメニューを作成するコードでmenu_tree_all_data()を呼び出すと、ツリー全体が返され、言語でメニューをフィルターするオプションがないようです。

特定の言語用にフィルタリングされたコードでメニューツリーを取得する方法を誰かが知っていますか?

3
Camsoft

I18n_menu.moduleがインストールされていると思います。この場合、i18n_menu_localize_tree($MENU_TREE)を使用して、現在の言語のツリーを取得します。

たとえば、(template.phpの)セカンダリメニューを取得するには:

$tree = menu_tree_all_data('menu-secondary');
$variables['secondary_menu_expanded'] = menu_tree_output(i18n_menu_localize_tree($tree));
5
ndvo