私はこのトピックについて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;
});
};
これで私を助けてください。すべての提案に感謝します。