drupal で徹底的な ajax を要求されたビューの結果にブロック コンテンツを追加する必要があります。どうすればこれを達成できますか?
質問する
201 次
1 に答える
0
Drupal 7 では、このようにできると思います。これのいくつかは必要ないかもしれません。これを設定してからしばらく経ちましたが、うまくいきます...
template.php ファイルに次を追加します。
function _phptemplate_variables($hook, $vars) {
switch ($hook) {
case 'page':
// If the page was requested with the jQuery ajax functionalities, an HTTP header (X-Requested-With: XMLHttpRequest)
// will be sent to the server, making it possible to identify if we should serve the content as JSON
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 'XmlHttpRequest' == $_SERVER['HTTP_X_REQUESTED_WITH']) {
// Now that we know that the page was requested via remote scripting (AJAX) we can serve the content as JSON
// by telling Drupal to use a different template for the page (in this case page-json.tpl.php)
$vars['template_files'] = is_array($vars['template_files']) ? $vars['template_files'] : array();
$vars['template_files'][] = 'page-json';
}
break;
}
}
テンプレート フォルダーにテンプレート ファイルを作成し、次の名前を付けますpage-json.tpl.php
。
<?php
if($messages) {
$content = $messages.$content;
}
echo drupal_to_js($content);
?>
次に、script.js ファイルで次のようにします。
jQuery(document).ready(function($){
if(typeof Drupal.settings.views != "undefined")
{
var data = {};
// Add view settings to the data.
for (var key in Drupal.settings.views.ajaxViews[0]) {
data[key] = Drupal.settings.views.ajaxViews[0][key];
}
// Get the params from the hash.
if (location.hash) {
var q = decodeURIComponent(location.hash.substr(1));
var o = {'f':function(v){return unescape(v).replace(/\+/g,' ');}};
$.each(q.match(/^\??(.*)$/)[1].split('&'), function(i,p) {
p = p.split('=');
p[1] = o.f(p[1]);
data[p[0]] = data[p[0]]?((data[p[0]] instanceof Array)?(data[p[0]].push(p[1]),data[p[0]]):[data[p[0]],p[1]]):p[1];
});
}
$.ajax({
url: Drupal.settings.views.ajax_path,
type: 'GET',
data: data,
success: function(response) {
console.log(response);
// look into the log to see what results get back
},
error: function(xhr) {
},
dataType: 'json'
});
}
});
Drupal.settings.views: Embed a View using AJAXに関するこの投稿を参照してください。
情報を入手したソースは次のとおりです。 http://drupal.org/node/174008
于 2012-12-11T21:12:32.363 に答える