Задача.
Сделать мультиязычное меню которое:
- В текущем языке выводит только пункты этого языка(опционально lang neutral но и без него хорошо)
- При сортировке меню в текущем языке все связанные элементы также сортируются(в моем случае не связанных не существует и не может существовать)
- При сортировке меню если пользователь имеет право видеть неопубликованную ноду елемент меню, то они отображаются в меню
Вопрос, чем делать, может я проглядел что то в модулях menu, i18n. Или есть какой то хитрый способ для таких случаев?
П.С.
В моем случем елементы меню nodы c переводами, к нодам всегда есть перевод. в меню вбиваются автоматом при создании, аналог и переводы ноды. меню 2-ух уровневое
Комментарии
Для пунктов меню текущего языка
<?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);
?>
up, +subscribe