私はこのトピックについてdrupal.orgに多くの投稿をしていましたが、残念ながら間違ったコンテキストでした。
それは問題ではないと思うので、別の方法で試してみます。おそらくこれが解決策になるかもしれません。 PHPページ全体をロードしてajaxで特定のdivを抽出することは正しく動作しませんでした。そのため、drupalコンテンツとajaxを使用してdivに挿入します。リクエストされたURLで「ajax = 1」を検索するhook_preprocess_pageとhook_preprocess_nodeを使用してクエリを実行し、ページ全体なしでコンテンツのみを提供します。特定のtpl.phpファイル、理論的には、drupalの出力を$ contentのみに制限することができます。ここに問題があります。tpl.phpファイルを残しても、私のアプローチは機能していますオリジナルの方法ですが、node-ajax.tpl.phpから「$ content」を削除します。「正しく動作する」とは、drupalはページ全体を再ロードしないが、オフにすることを意味しますもちろん、コンテンツではありません。ただし、$ content変数で原因を説明できないため、生成されたコンテンツのhtmlのみであると考えました。したがって、私の質問は、drupalの出力をどのように制限することができるかです。コンテンツ、または私はやっていますかこれを機能させるための間違った手順。これが私が使用しているモジュールとjsファイルです:my_ajax.module:
<?php
function my_ajax_init()
{
drupal_add_js(drupal_get_path('module', 'my_ajax') . '/my_ajax.js');
}
function my_ajax_preprocess_page(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1)
{
$vars['template_file'] = 'page-ajax';
}
}
function my_ajax_preprocess_node(&$vars, $hook)
{
if (isset($_GET['ajax']) && $_GET['ajax'] == 1)
{
$vars['template_file'] = 'node-ajax';
}
}
my_ajax.js:
Drupal.behaviors.my_ajax = function (context) {
$('#content-group-inner .node a').live('click', function (e) {
var url = $(this).attr('href');
//$('#content-region-inner').slideUp('slow');
$('#content-region-inner').empty().html('<img src="ajax-loader.gif" style="margin-left:50%;"/>');
xhr = $.ajax({
data: 'ajax=1',
type: 'GET',
url: url,
success: function (data) {
$('#content-region-inner').html(data);
Drupal.attachBehaviors(context);
}
});
return false;
});
};
これで私を助けてください。すべての提案に感謝します。
私はそれを持っている。これは正しく機能しています:
Drupal.behaviors.my_ajax = function (context) {
$('#content-group-inner a').live('click', function (e) {
$('#content-group-inner a').addClass('my_ajax-processed');
var url = $(this).attr('href');
$('#content-region-inner').empty().html('<img src="ajax-loader.gif" style="margin-left:50%;"/>');
$('#content-region-inner').load(url,'ajax=1',function() {
Drupal.attachBehaviors('#content-region-inner');
});
return false;
});
};
ご協力ありがとうございます。
あなたの問題は、あなたの成功関数がスコープ内に変数コンテキストを持たないため、アタッチ動作が未定義で機能することだと思います。
あなたができると思います
Drupal.attachBehaviors($('#content-region-inner'));