Drupal 6 テーマを Drupal 7 に更新しています。Drupal 6 バージョンでは、プライマリ メニューに JQuery を挿入してドロップ ダウンとして機能させる (+ メニュー ツリーを取得するための前処理関数) 素敵な小さなメニュー関数がありました。そしてこれはうまくいきました。
私のテーマの Drupal 7 バージョンでは、Drupal 6 で行ったように info ファイルで JavaScript を呼び出し、レンダリングされたページのソースを見ると、メニュー自体に挿入されていません。以下のスクリプトと標準の superfish.js を呼び出します (Drupal 6 でも問題なく動作しました)。
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 */
});
};
すべての jQuery('#navigation ul').superfish({
面倒な作業を行う行は次のとおりだと思います(メニューの周囲のdiv IDは「#navigation」であり、その後<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 についてあまり詳しくないので、これが修正方法を見つける方法について誰かにベルを鳴らしてくれることを願っています。ありがとう。