私は drupal に i18n モジュールを使用しており、2 つの言語 (英語と中国語) を使用しています。メイン メニューとカスタム メニュー (連絡先メニュー)、および両方を組み合わせたメニューがあります。すべてのメニューはリージョンにはありませんが、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;
?>