Как сделать нормальное мультиязычное меню с норм сортировкой?

Главные вкладки

Аватар пользователя kuzyakiev@drupal.org kuzyakiev@drupal.org 8 апреля 2010 в 15:21

Задача.
Сделать мультиязычное меню которое:
- В текущем языке выводит только пункты этого языка(опционально lang neutral но и без него хорошо)
- При сортировке меню в текущем языке все связанные элементы также сортируются(в моем случае не связанных не существует и не может существовать)
- При сортировке меню если пользователь имеет право видеть неопубликованную ноду елемент меню, то они отображаются в меню
Вопрос, чем делать, может я проглядел что то в модулях menu, i18n. Или есть какой то хитрый способ для таких случаев?

П.С.
В моем случем елементы меню nodы c переводами, к нодам всегда есть перевод. в меню вбиваются автоматом при создании, аналог и переводы ноды. меню 2-ух уровневое

Комментарии

Аватар пользователя Alangasar Alangasar 8 апреля 2010 в 16:15

Для пунктов меню текущего языка

<?php
    $menu_name 
'primary-links';    
    
$tree menu_tree_page_data($menu_name);
    
// Leave only current language menus and language neutral menus
    
$current_language $language->language;
    if ( ! empty(
$tree) ) {
      foreach ( 
$tree as $menu_key => $menu_link ) {
            if ( 
$menu_link['link']['options']['langcode'] != $current_language &&
                 ! empty( 
$menu_link['link']['options']['langcode'] ) ) {
              unset( 
$tree[$menu_key] ) ;
            }
      }
    }
$my_menu menu_tree_output($tree);
?>