Tôi đã làm rất nhiều bài đăng trên drupal.org về chủ đề này, nhưng không may trong bối cảnh sai.
- Nội dung Ajax không đính kèm JS và CSS (diễn đàn) cần thiết
- Nội dung Ajax không đính kèm JS và CSS cần thiết (vấn đề)
Tôi nghĩ đó không phải là vấn đề, vì vậy tôi thử nó với một cách tiếp cận khác, và có lẽ đây có thể là giải pháp. Tải toàn bộ Trang PHP và trích xuất một div nhất định với ajax không hoạt động đúng cách. Vì vậy, tôi nghĩ rằng, tôi có thể để drupal tải nội dung và tiêm ajax vào div. Tôi đã thực hiện một truy vấn với hook_pre process_page và hook_pre process_node đang tìm kiếm "ajax = 1" trong URL được yêu cầu và sau đó chỉ đưa ra nội dung mà không có toàn bộ trang. Và bây giờ với sự trợ giúp của một số tệp tpl.php, theo lý thuyết, tôi có thể giới hạn đầu ra của drupal chỉ còn $ nội dung. Và đây là vấn đề. Cách tiếp cận của tôi đang hoạt động ngay cả khi tôi để các tệp tpl.php theo cách ban đầu, nhưng loại bỏ "$ content" khỏi nút-ajax.tpl.php. Với "làm việc đúng cách", ý tôi là drupal không tải lại toàn bộ trang, nhưng tất nhiên không phải là nội dung. Nhưng tôi không thể giải thích điều đó với bản thân mình, vì trong biến nội dung $, vì vậy tôi nghĩ, chỉ là html của nội dung được tạo. Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể giới hạn đầu ra của drupal, chỉ nội dung, hoặc tôi đang làm sai các bước để làm việc này. Đây là mô-đun và tệp js tôi đang sử dụng: 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;
});
};
Xin hãy giúp tôi với. Mọi đề nghị đều được đánh giá cao.