我正在为 drupal 使用 i18n 模块,并且我有两种语言(英文和中文)。我有一个主菜单和一个自定义菜单(联系人菜单)和一个结合两者的菜单。所有菜单都不在区域中,而是通过 page.tpl 打印。
当我在主菜单中的一个节点上并单击“中文”时,将显示已翻译的节点,并且主菜单现在只包含所有中文节点链接 - 完美!
实际上,自定义菜单的工作原理相同,但仅当我将其分配给一个区域时。我必须通过我的 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;
?>