2012-09-25 31 views
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; 
     ?> 

回答

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; 
      ?> 
相關問題