0

私は 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;
        ?>
4

1 に答える 1

0

それを見つけた、ちょっと論理的...i18n_menu_navigation_linksトリックを行います

if (menu_navigation_links('menu-contact-menu')): ?>
                <nav id="contact-menu" role="navigation">

                    <?php print theme(
                        'links', array(
                            'links' => i18n_menu_navigation_links('menu-contact-menu', 0),
                            'attributes' => array(
                                'class'=> array('links', 'contact_menu')
                            )
                        )
                    ); ?>
                </nav>
            <?php
                endif;
            ?>
于 2012-09-26T07:20:32.413 に答える