0

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 についてあまり詳しくないので、これが修正方法を見つける方法について誰かにベルを鳴らしてくれることを願っています。ありがとう。

4

4 に答える 4

1

開始するには、Drupal 7 での js の管理を参照してください。アドバイスはクロージャーを作成することですが、それがコードにどのように影響するかわかりません。

それでも問題が解決しない場合はalert('message')、コード内で または同様のことを実行して、動作 / js ファイルが実行されているかどうかをテストできます。

于 2011-01-08T16:12:41.397 に答える
0

@googletorpから送信されたページリンクに基づくコードは次のとおりです。

(function ($) {

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

      });
    }
  };

})(jQuery);

ドロップダウンメニューは現在Drupal7で機能していますが、イージング、スピード、アニメーションのコードを追加する方法を理解する必要があります...

于 2011-01-08T16:58:11.087 に答える
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);
于 2011-10-19T15:48:18.720 に答える
-1

聖なる牛、

jqueryサイクルプラグインで同様の問題を解決するために2日間働きました。解決策はここにあります:

http://drupal.org/node/1043478#comment-4168166

phpコードで問題になる継ぎ目。<\'>のように<'>を保護する必要があります

于 2011-03-04T21:46:15.110 に答える