0
我使用的是i18n模塊,用於drupal,我有兩種語言(英文和中文)。我有一個主菜單和一個自定義菜單(聯繫菜單)和一個菜單組合。所有菜單不在區域內,而是通過page.tpl打印。在drupal 7的page.tpl.php中打印一個自定義菜單,顯示所有語言的所有節點,而不是隻顯示當前的語言
當我在主菜單中的一個節點上,點擊「chinese」時,顯示翻譯好的節點,主菜單現在只包含所有中國節點鏈接 - 完美!
實際上,自定義菜單的工作原理是相同的,但只有當我將它分配給一個區域。我必須通過我的page.tpl中的php代碼打印這個菜單 - 但是這個菜單中的所有節點,英文和中文都會打印出來。當我把菜單放入一個區域時,只顯示當前語言的節點。
如何渲染自定義菜單以僅顯示當前語言的節點?
繼承人的PHP代碼(我用/寫ZEN分專題)
if ($main_menu): ?>
<nav id="main-menu" role="navigation">
<?php print theme(
'links__system_main_menu', array(
'links' => $main_menu,
'attributes' => array(
//'id' => 'main-menu-links',
'class' => array('links', 'main_menu', 'clearfix'),
)
)
); ?>
</nav>
<?php
endif;
?>
以上的偉大工程,只打印當前語言節點/鏈接,不像:
<?php if (menu_navigation_links('menu-contact-menu')): ?>
<nav id="contact-menu" role="navigation">
<?php print theme(
'links', array(
'links' => menu_navigation_links('menu-contact-menu'),
'attributes' => array(
'class'=> array('links', 'contact_menu')
)
)
); ?>
</nav>
<?php
endif;
?>
那麼這個組合菜單是怎麼樣的?目前:
<?php
// combine main and contact menu and output as one
if ($main_menu && menu_navigation_links('menu-contact-menu')): ?>
<nav id="footer-menu" role="navigation">
<?php
$links = array_merge($main_menu, menu_navigation_links('menu-contact-menu'));
print theme(
'links', array(
'links' => $links,
'attributes' => array(
'class'=> array('links', 'footer-menu')
)
)
);
?>
</nav>
<?php
endif;
?>