drupal.org 에서이 주제에 대해 많은 게시물을 작성했지만 불행히도 잘못된 컨텍스트에서 이루어졌습니다.
나는 그것이 문제가 아니라고 생각하므로 다른 접근법으로 시도해보십시오. 아마도 이것이 해결책 일 수 있습니다. 전체 PHP 페이지를로드하고 아약스로 특정 div를 추출하는 것이 올바르게 작동하지 않았습니다. 그래서 drupal이 내용을로드하고 div에 ajax를 주입 할 수 있다고 생각했습니다. 요청한 URL에서 "ajax = 1"을 찾고있는 hook_preprocess_page 및 hook_preprocess_node를 사용하여 쿼리 한 다음 전체 페이지가없는 컨텐츠 만 제공합니다. 그리고 이제 특정 tpl.php 파일의 도움으로 이론적으로 drupal의 출력을 $ content로 제한 할 수 있습니다. 그리고 여기에 문제가 있습니다. tpl.php 파일을 원래 방식으로 남겨두고 node-ajax.tpl.php에서 "$ content"를 제거하더라도 내 접근 방식이 작동합니다. "올바른 방법으로 작업"을하면 드루팔이 전체 페이지를 다시로드하지 않습니다. 물론 내용이 아닙니다. 그러나 나는 $ 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;
});
};
이것 좀 도와주세요. 모든 제안에 감사드립니다.