Ich habe viele Beiträge auf drupal.org zu diesem Thema verfasst, aber leider im falschen Kontext.
- Ajaxed-Inhalte fügen nicht die erforderlichen JS- und CSS-Dateien hinzu (Forum)
- Ajaxed-Inhalte fügen nicht das erforderliche JS und CSS hinzu (Problem)
Ich denke, das ist nicht das Problem, also versuche ich es mit einem anderen Ansatz, und vielleicht könnte dies die Lösung sein. Das Laden der gesamten PHP-Seite und das Extrahieren eines bestimmten Div mit Ajax funktionierte nicht richtig. Also dachte ich, ich könnte Drupal nur den Inhalt laden lassen und ihn mit Ajax in das Div injizieren. Ich habe eine Abfrage mit hook_preprocess_page und hook_preprocess_node durchgeführt, die nach einem "ajax = 1" in der angeforderten URL sucht und dann nur den Inhalt ohne die gesamte Seite ausgibt. Und jetzt könnte ich mit Hilfe bestimmter tpl.php-Dateien theoretisch die Ausgabe von drupal auf nur $ content beschränken. Und hier ist das Problem. Mein Ansatz funktioniert auch dann, wenn ich die tpl.php-Dateien auf die ursprüngliche Weise belasse, aber den "$ content" aus node-ajax.tpl.php entferne. Mit "richtig arbeiten" meine ich, dass Drupal nicht die ganze Seite neu lädt, aber natürlich nicht den inhalt. Aber ich kann mir das nicht erklären, weil in der Variablen $ content, also dachte ich, nur das HTML des generierten Inhalts ist. Meine Frage ist also, wie ich die Ausgabe von Drupal auf den Inhalt beschränken kann oder ob ich die falschen Schritte mache, um dies zum Laufen zu bringen. Hier ist das Modul und die JS-Datei, die ich verwende: 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;
});
};
Bitte helfen Sie mir dabei. Jeder Vorschlag wird geschätzt.