Con el avance de las nuevas tecnologías seguro que habra mucha gente que este buscando integrar esas nuevas tecnologías con los -también famosos- CMS, en este caso hablo de Typo3 y de AJAX, con lo que se pueden conseguir cosas muy interesantes, como por ejemplo: cargar galerías de imágenes, mostrar secciones de páginas en base a ciertas peticiones, etc.
Pues bien, existen unos cuantos plug-ins (extensiones) de Typo3 que permiten utilizar AJAX en el front-end, pero en muchos casos -casi siempre en mi caso- esas extensiones no son capaces de hacer las cosas que se quiere que hagan, en tal caso hay que hacer extensiones propias y dicho eso voy a explicar fácilmente como integrar AJAX en nuestras extensiones.
Lo primero es hacer la extensión y para esto hay otra extensión que crea una extensión base, es decir una colección de archivos que luego podemos extender para que la funcion se comporte como queremos que lo haga. La extensión se llama Kickstarter y asumo que para continuar con estas instrucciónes se tiene un control de dicha extensión (no voy a tocar nada de eso aquí). Aquí hay un tutorial básico de la extensión Kickstarter.
La lógica detrás de poder utilizar AJAX es bastante simple: desde la versión 4.0 de Typo3 se ha definido un nuevo método para poder hacer peticiones y poder limitar la respuesta de Typo3, es decir se puede hacer una petición a una URL determinada y definir que es lo que se carga, evitando sobrecargas en el servidor -y de ancho de banda- al cargar extensiones, modulos, librerías, sistemas de caché, etc, etc. que no se necesitan para el caso de utilizar AJAX. Esta definición se llama eID y para poder utilizarla hay que definirla en la configuración de nuestra extensión.
Entonces, para definir nuestra extensión abrimos el archivo ext_localconf.php -que está en el directorio donde tenemos la extensión que vamos a utilizar-
Y al final del archivo (antes de ?>) agregamos esto:
-
$TYPO3_CONF_VARS['FE']['eID_include']['tx_mipalabra'] = 'EXT:mi_extension/pi1/procesador_eventos.php';
En donde tx_mipalabra será la clave registrada con la que podamos acceder a nuestro código para peticiones.
Con esto hecho podremos acceder a http://miservidor.com/index.php?eID=tx_mipalabra y Typo3 pasará la petición al archivo que vaya a procesar la petición, en este caso procesador_eventos.php
Lo siguiente que tenemos que hacer es definir los metodos que vayamos a utilizar dentro del procesador_eventos.php y listo, básicamente eso es todo, podemos entonces hacer peticiones a través de AJAX enviando los parametros que queramos, por ejemplo:
-
xobject = false;
-
if(window.XMLHttpRequest)
-
{
-
try { xobject = new XMLHttpRequest(); }
-
catch(e) { xobject = false; }
-
}
-
else if(window.ActiveXObject)
-
{
-
try { xobject = new ActiveXObject("Msxml2.XMLHTTP"); }
-
catch(e)
-
{
-
try { xobject = new ActiveXObject("Microsoft.XMLHTTP"); }
-
catch(e) { xobject = false; }
-
}
-
}
-
-
if(xobject)
-
{
-
xobject.onreadystatechange = function() { AJAX_DATA.completeProcess(action); }
-
-
xobject.open("POST", "http://miservidor.com/index.php?eID=tx_mipalabra&get=usuario&uid=1000", sync);
-
xobject.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
-
xobject.send(AJAX_DATA.makeDataString(action, params));
-
}
-
else
-
alert('Error code: 01');
Aunque el código anterior no está completo (falta el resto del proceso AJAX) es un claro ejemplo de como hacer la petición que habremos de procesar en nuestro archivo para este fin.
Eso es todo, ya hemos preparado nuestra extensión y nuestra instalación de Typo3 para que pueda manejar AJAX, esto es bastante útil a la hora de tener por ejemplo un calendario de eventos sin tener que recargar la página cada vez al seleccionar una fecha determinada.