Hoy he tenido que desarrollar un módulo para Drupal utilizando xajax, después de un rato investigando por fin he conseguido hacerlo funcionar, os explicó aquí cómo hacerlo y lo dejo anotado para futuros módulos.
Es bastante sencillo, primero tenemos que descargar la versión estable de xajax y descomprimirla en el directorio del plugin.
1. Incluímos la clase de xajax en el fichero .module y declaramos las funciones que vayamos a utilizar.
require_once('xajax/xajax.inc.php' );
function myfunction()
{
//código
}
2. Módificamos o añadimos el hook_menu(), con esta función podemos modificar el header de la página y así poder incluir la llamada al javascript:
function nombre_modulo_menu() {
// inicializamos xajax
$xajax = new xajax('/index.php');
// registramos las funciones
$xajax->registerFunction("myfunction");
// incluimos el javascript en el header drupal_set_html_head($xajax->getJavascript('modules/nombre_modulo/xajax'));
$xajax->processRequests();
}
3. Llamamos a la función desde el contenido del módulo.
Ejemplo:
Llamada a la función desde un bloque generado por el módulo:
function nombre_modulo_block($op='list', $delta=0) {
if ($op == "list") {
$block[0]["info"] = t("Bloque xajax");
return $block;
} else if ($op == 'view') {
// contenido del bloque
$block_content = '<script>xajax_myfunction();</script>
// set up the block
$block['subject'] = 'Bloque xajax';
$block['content'] = $block_content;
return $block;
}
}
Buenas compañero, me gustaría saber si se puede utilizar xajax en los formularios de Drupal, para generar selects dinámicos.
Un saludo
Oskar
Hola Oskar, sí que se puede, si lo que quieres es modificar los formularios del core de drupal lo puedes hacer creando plantillas nuevas e incluyendo xajax, hay un libro sobre theming de drupal que habla de como modificar los formularios, se llama Drupal 5 Themes de Packt Publishing que tal vez te pueda ayudar. Saludos!
Buenas TRU3NO, si tengo el libro y esta muy bien, lo que estoy mirando es cuando tengo dos selects, creados mediante campos de cck, como decirle al segundo el id que se ha seleccionado en el primero, esto con xajax claro.
Un saludo
Oskar