web-dev-qa-db-ja.com

クリックでビューブロックを呼び出す方法は?

15個のビューブロックを含むページ/ノードがあり、各ビューブロックに多くのフィールドがあり、これによりページの読み込みが非常に遅くなります。

必要な場合にのみビューブロックをロードするにはどうすればよいですか?たとえば、ボタン/ div(会場)をクリックすると、テンプレートのすべてのビューブロックを呼び出して一度にすべてロードする代わりに、ビューブロックの会場がロードされます。

更新:ajaxを使用してみましたが、ビューブロックでajaxをオンにしても機能しません。

これは私が使用したコードです:

JS:

$(document).ready(function(){
$("#getvenue").click(function(){
    $.ajax(
    Drupal.settings.basePath + 'views/ajax',
    {

    view_name: 'custom_package_form',view_display_id: 'block_56'
    },

    function(response)
    {
        if (response[1] !== undefined) 
        {
            var viewHtml = response[1].data;
            $("#output-venue").html(viewHtml);

            Drupal.attachBehaviors();
        }
        else {
            $("#output-venue").html("NONE");
        }


    });
    });
 });

ノード会場TPL:

<button id="getvenue"> GET VENUE </button>
<div id="output-venue"></div>

何も起こらない、私はそれが何かを持っているかどうかを確認するために変数viewHtmlに警告を試みました、警告はnullしか表示しません。

JSの何が問題になっていますか?誰かが私を正しい方向に向けることができますか?

前もって感謝します!

1
Danz

このコードを試してください

$.ajax({
    url: Drupal.settings.basePath + 'views/ajax',
    type: 'POST',
    dataType: 'json',
    data: 'view_name=custom_package_form&view_display_id=block_56',
    success: function(response) {
      var output = response[1].data;
      $("#output-venue").html(output);
    },
    error: function(data) {
        alert('An error occured!');
    }
});
1
M a m a D

このモジュールを試す必要があります ajaxblock 、eコマースサイトの構築にubercartを使用しました。

匿名ユーザーがページを表示したときに、キャッシュされたページ全体をロードした後、追加のAJAX要求によっていくつかのブロックをロードすることを許可します。ほとんどが静的なサイト、および匿名ユーザーのページキャッシュに適しています。は大きなメリットですが、動的でなければならない情報がいくつかあります。

0
vgoradiya