ブロックにいくつかの公開されたフィルターがあるビューがあります。 AJAXおよび自動送信機能を使用しているため、フィルターオプションが変更されるとすぐにビューが再ロードされます。
オプションを選択してからビューが再ロードされるまでの短い遅延の間に、おなじみの青いAJAX= throbberがフォームの下部のどこかに表示されます(非表示の送信ボタンが現在配置されている場所だと思います) )。
Throbber要素のCSSをオーバーライドすることでこの画像をカスタマイズできることはわかっていますが、まったく使用しないほうがよいでしょう。
むしろ、jQueryアニメーションを使用して、公開されたフィルターフォーム(理想的にはメインビューも)をフェードアウトします。次に、AJAX呼び出しが完了すると、フェードインします。
それができない場合は、ビューのUIモジュールが更新時に使用するのと同じ方法を使用します。つまり、このアイコンをページの中央に配置します。
これはすでに組み込まれているので、この読み込み動作のスタイル/場所を変更する設定がどこかにあると思いました。そのような運はありません。
これらの方法のいずれかを実装するにはどうすればよいですか?
Drupal 7 with Views 7.x-3.3を使用しています。
小さなjqueryを使用してもかまわない場合は、常に次のようにすることができます。
$('#view-id').ajaxStart(function(){
$('#view-filters-id').fadeTo(300, 0.5);
});
$('#view-id').ajaxSuccess(function(){
$('#view-filters-id').fadeTo(300, 1.0);
});
完全を期すために、ここで私が最終的に使用したコードを示します。 AJAXロードの開始時に公開されたフィルターフォームとビューの両方をフェードアウトし、終了時に再びフェードインします。
(function($) {
Drupal.behaviors.events = {
attach: function(context, settings) {
$('#views-exposed-form-events-page', context).ajaxStart(function(){
$('#views-exposed-form-events-page,div.view-id-events', context).fadeTo(300, 0.5);
});
$('#views-exposed-form-events-page', context).ajaxSuccess(function(){
$('#views-exposed-form-events-page', context).fadeTo(300, 1.0);
$('div.view-id-events', context).css('opacity', 0.5).fadeTo(300, 1.0);
});
}
};
})(jQuery);
こんにちは私はあなたがしたいことを正確に行う非常にシンプルなモジュールを作成しました。モジュールには、スロバーのスタイルを制御したり、ハッキングすることなく独自の画像をアップロードしたりできる設定ページがあります。
これはサンドボックスリンクです: http://drupal.org/sandbox/ANDiTKO/1556808
もしそれが役に立ったと思ったら、公式プロジェクトとして承認されるように、ここでレビューしてください: http://drupal.org/node/1556114
私は研究をしました。throbber
は、_Drupal.views.ajaxView
_のコンストラクターにハードコードされています ここ 。
_Drupal.views.ajaxView
_のインスタンスは_Drupal.ajax
_に格納されておらず、 そこにあります _@todo
_について。
これは、オブジェクトにアクセスして独自のパラメーターを設定できないことを意味します。
短い答えはCSSです。
ビューの管理ページ throbber
を非表示にして 親の_.ajax-progress-throbber
_にスタイルを追加します。
_.ajax-progress-throbber {
background-color: #232323;
background-image: url("../images/loading-small.gif");
background-position: center center;
background-repeat: no-repeat;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border-radius: 7px;
height: 24px;
opacity: .9;
padding: 4px;
width: 24px;
}
_
はい、私はAJAX要素(ボタン、リンクなど)に対して上書きできるいくつかのメソッドを見つけました。ここに例を示しました: 拡張する方法または“フック」DrupalフォームAJAX? 。しかし、この場合はあまり良くありません。
Progress要素はbeforeSend
の段階で表示されるため、発生する前に何かを行うことができます。