Estaba haciendo muchas publicaciones en drupal.org sobre este tema, pero desafortunadamente en el contexto equivocado.
- El contenido Ajaxed no está adjuntando JS y CSS necesarios (foro)
- El contenido Ajaxed no está adjuntando JS y CSS necesarios (problema)
Creo que ese no es el problema, así que lo intento con un enfoque diferente, y tal vez esta podría ser la solución. Cargar toda la página PHP y extraer un cierto div con ajax no funcionó de la manera correcta. Entonces pensé que podía dejar que drupal cargara solo el contenido e inyectarlo con ajax en el div. Hice una consulta con hook_preprocess_page y hook_preprocess_node que está buscando un "ajax = 1" en la URL solicitada y luego solo muestra el contenido sin toda la página. Y ahora, con la ayuda de ciertos archivos tpl.php, en teoría, podría limitar la salida de drupal a solo $ content. Y aquí esta el problema. Mi enfoque funciona incluso cuando dejo los archivos tpl.php de la manera original, pero eliminando el "$ content" de node-ajax.tpl.php. Con "trabajar de la manera correcta", quiero decir que drupal no vuelve a cargar toda la página, pero por supuesto no el contenido. Pero no puedo explicarme eso a mí mismo, porque en la variable $ content, así que pensé, es solo el html del contenido generado. Entonces mi pregunta es, ¿cómo puedo limitar la salida de drupal, solo al contenido, o estoy haciendo los pasos incorrectos para que esto funcione? Aquí está el módulo y el archivo js que estoy 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;
});
};
Por favor, ayúdame con esto. Todas las sugerencias son apreciadas.