Stavo scrivendo molti post su drupal.org su questo argomento, ma sfortunatamente nel contesto sbagliato.
- Il contenuto Ajaxed non allega JS e CSS (forum) necessari
- Il contenuto Ajaxed non allega JS e CSS necessari (problema)
Penso che non sia questo il problema, quindi lo provo con un approccio diverso e forse questa potrebbe essere la soluzione. Caricare l'intera pagina PHP ed estrarre un certo div con ajax non ha funzionato nel modo giusto. Quindi ho pensato di poter caricare drupal solo il contenuto e iniettarlo con ajax nel div. Ho fatto una query con hook_preprocess_page e hook_preprocess_node che sta cercando un "ajax = 1" nell'URL richiesto e quindi distribuisce solo il contenuto senza l'intera pagina. E ora con l'aiuto di alcuni file tpl.php, in teoria, potrei limitare l'output di drupal a solo $ content. Ed ecco il problema. Il mio approccio funziona anche quando lascio i file tpl.php nel modo originale, ma rimuovendo il "$ content" da node-ajax.tpl.php. Con "lavorare nel modo giusto", intendo dire che drupal non ricarica l'intera pagina, ma ovviamente non il contenuto. Ma non posso spiegarmelo, causa nella variabile $ content, quindi ho pensato, è solo l'html del contenuto generato. Quindi la mia domanda è: come posso limitare l'output di drupal, solo al contenuto, o sto facendo i passi sbagliati per farlo funzionare. Ecco il modulo e il file js che sto usando: 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;
});
};
Per favore, aiutatemi con questo. Ogni suggerimento è apprezzato.