2011-01-08 75 views
0

我正在更新Drupal 7的Drupal 6主題。在Drupal 6版本中,我有一個很棒的小菜單功能,它將JQuery注入主菜單作爲一個下拉菜單(+一個預處理函數來獲取菜單樹),這很好。Drupal 7主菜單中的問題,升級主題中的JQuery和Superfish

在我的主題的Drupal 7版本中,我在我的信息文件中調用JavaScript,就像我在Drupal 6中所做的那樣,並且查看了我呈現的頁面的源代碼,但並未注入菜單本身。我把下面的腳本以及標準superfish.js

Drupal.behaviors.skyBehavior = function(context) { 
    /** 
    * Superfish Menus 
    * http://users.tpg.com.au/j_birch/plugins/superfish/ 
    * @see js/superfish.js 
    */ 
    jQuery('#navigation ul').superfish({ 
    animation: { opacity: 'show', height:'show' }, 
    easing: 'swing', 
    speed: 250, 
    autoArrows: false, 
    dropShadows: false /* Needed for IE */ 
    }); 
}; 

我相信,它所有繁重的任務正行(這在Drupal 6.再次運行良好):jQuery('#navigation ul').superfish({ (請注意,我的周圍DIV然後<ul>標籤在那之後開始)

我在我的Drupal 7版本中運行一個預處理函數,也爲了獲得我的主菜單的菜單樹,我可以看到整個樹在Firebug中查看,但我可以看到Jquery注入的代碼丟失。

在我的Drupal 6主題我會看到:

<ul class="menu sf-js-enabled" style="visibility: hidden; display: none;"> ... - 當然,將鼠標懸停在變化「顯示:無」到「看得見」。

但在Drupal 7的版本,我的主題,所有我在Firebug中看到的是: <ul class="menu"> ...

我不知道了很多關於JavaScript的,所以我希望這也許敲響了警鐘與別人至於如何找到修復。謝謝。

回答

1

你可以看看Managing js in Drupal 7讓你開始。建議是創建一個閉包,但我不明白這會如何影響你的代碼。

如果它沒有幫助,您可以通過在代碼中執行alert('message')或類似測試來測試行爲/ js文件是否正在運行。

+0

這樣做的伎倆,我會張貼修復它的代碼。非常感謝! – 2011-01-08 16:56:43

0

這是基於頁面鏈接的代碼@googletorp寄給我:

(function ($) { 

    Drupal.behaviors.MyTheme = { 
    attach: function(context, settings) { 
     $('#navigation ul', context).superfish(function() { 

     }); 
    } 
    }; 

})(jQuery); 

下拉菜單,現在在Drupal 7個工作,但我仍然需要弄清楚如何添加代碼緩解,速度和動畫...

0

就意識到,我從來沒有張貼工作代碼。這裏是Drupal 7代碼的作品:

(function ($) { 

Drupal.behaviors.MyTheme = { 

attach: function(context, settings) { 
$('#navigation ul', context).superfish({ 

animation: { opacity: 'show', height:'show' }, 
speed: 250, 
autoArrows: false, 
dropShadows: false /* Needed for IE */ 

}); 
}}; 

})(jQuery);