たとえば分類用語ページなどのビュー生成ページを表示しているときに、新しい分類用語などのいくつかのパラメーターを渡してビュー生成コンテンツを更新する方法はありますか。
これの目的は、ajaxリクエストを介してページコンテンツを更新することです。
ありがとう
カスタムモジュールでは、引数を使用してビューを簡単に実行およびレンダリングできます。
私は...するだろう:
1-AJAXサーバーへの呼び出しをトリガーするようにいくつかのJSコードを設定します
2-hook_menu()
を使用して、特定のURLにカスタムメニューコールバックを定義します。つまり、_/views/ajax/view_name/view_display/view_arguments
_
3-コールバック関数を作成します()
4-ビューを引数付きでロードしてレンダリングします(これはFrom Views 2 APIです):
_$view = views_get_view('foobar'); // get the view named `foobar`
$view->set_display('page_1'); // Set the view display you want to use
$view->set_arguments(array($foo)); // Pass an array containing one or several variables you want to use as arguments in the view
$result = $view->render(); // Returns HTML
_
5-結果をJSONで返します(ビュー自体よりも多くの情報を渡したい場合は実用的です)。 D7ではdrupal_json_output()
を使用できます。
これは、ajaxを使用してビューブロックをロードし、ページで作成したリンクのリストのhref値からコンテキストフィルターを渡すために使用したJavaScriptです。これが誰かを助けることを願っています!
function getInfo(args) {
$.ajax({
url: Drupal.settings.basePath + 'views/ajax',
type: 'post',
data: {
view_name: 'agent_lookup',
view_display_id: 'agent_lookup_block', //your display id
view_args: args,
},
dataType: 'json',
success: function (response) {
if (response[1] !== undefined) {
var viewHtml = response[1].data;
$('#ajax-target').html(viewHtml);
//Drupal.attachBehaviors(); //check if you need this.
}
},
error: function(data) {
alert('An error occured!');
}
});
}
$('.ajax_button').once().click(function(e){
e.preventDefault();
var the_id = $(this).attr('href');
noSlashes = the_id.replace(/\//g,'');
getInfo(noSlashes);
});