Joomla!, la optimización de MooTools e inconvenientes

Tamaño de letra:

Mootools está en el core de Joomla!

De Mootools en Joomla! ya he hablado en varias ocasiones. Aunque voy a volver a recordar algunas cosas, ya comenté que Mootools está en el core de Joomla! (core = núcleo, en el interior de Joomla!). Mootools es una ayuda considerable en la programación en JavaScript pero en Joomla! tiene la peculiaridad de que los archivos mootools-core.js y mootools-more.js hacen la página mucho más pesada de lo que uno quisiera. Como sabrás, he creado un plugin para evitar la carga de estos scripts (Optimizar Mootools) y en estos mismos momentos estoy preparando la nueva versión 1.0.3 y me he topado con curiosos contratiempos que tal vez hagan que deje de desarrollar este componente...

Como ya he explicado en tutoriales anteriores, me voy a referir a Joomla! > 1.6. La principal diferencia que surgió a partir de Joomla! 1.6 es que Mootools está en el core de Joomla!. Lo puedes ver yendo a esta dirección:

Tu_sitio/media/system/js

Ahí verás los archivos que nos interesan, pero me voy a centrar en estos dos: mootools-core.js y mootools-more.js. Verás que tienes las versiones comprimidas y las versiones sin comprimir por ejemplo, vienen bien para depurar errores. Estos archivos, como también expliqué, los puedes descargar directamente desde la misma web de Mootools y allí puedes seleccionar las funciones que tú quieras como también si quieres la compresión o no con YUI compressor.

Como Joomla! lleva Mootools en su interior, pues muchos desarrolladores aprovechan esto y crean sus propias extensiones usando Mootools, es algo lógico. Por ejemplo en el componente Foro Kunena.

Entendiendo todo esto, yo me propuse intentar evitar la carga de determinados scripts de Mootools mientras no fueran necesarios. Por ejemplo, si un usuario visita tu página y no ha iniciado sesión, ¿por qué la web sigue cargando Mootools? Esta era una de mis preguntas... ¿No se podría optimizar la carga de Mootools de otra forma? ¿Realmente son necesarios? Veremos que tal vez sí.

Plugin Optimizar Mootools

En aquel momento expliqué desde cero cómo podemos crear un plugin para Joomla! y evitar la carga de scripts de MooTools, ahí nació el plugin Optimizar Mootools. Lo usé en karmany.net y observé en Chrome, desde la consola de herramientas para desarrolladores, que algunas funciones no eran reconocidas, es decir, que Joomla! carga Mootools porque hace uso de él (o ella).

Me puse a investigar y efectivamente desactivando los scripts que he mencionado antes, me encuentro que Joomla! pone en mi web el siguiente código:

function keepAlive() {    var myAjax = new Request({method: "get", url: "index.php"}).send();} window.addEvent("domready", function(){ keepAlive.periodical(3600000); });

¿de dónde procede ese código, podría ser de una extensión? Pues analizando un poco, vi que provenía de aquí:

Tu_sitio\libraries\joomla\html\html\behabior.php

Y si lees los comentarios, dicen lo siguiente: Keep session alive, for example, while editing or creating an article (Mantener abierta la sesión, por ejemplo, durante la edición o la creación de un artículo.) El problema es que la función addEvent necesita de mootools-core.js y si la quitas (con el plugin) pues te encontrarás con una excepción de JavaScript. Además desde Joomla! no puedes evitar este comportamiento, habría que modificar el código y no me parece adecuado.

Para evitar esto, tomé la decisión -creo que la más plausible- de usar Google Libraries API para la carga de mootools-core.js que se reduce bastante. Otra opción que estoy analizando en estos momentos es desactivar keepAlive desde el mismo plugin, sé cómo hacerlo pero no sé si es la mejor opción. El problema es que determinadas extensiones necesitan de mootools incluso a usuarios sin abrir sesión, por ejemplo en determinados comentarios o como veremos seguidamente.

Extensión Kunena y mootools

Personalmente, desde que uso Google Libraries API, no me preocupa mootools-core.js y por esto mismo tampoco estoy interesado en la opción que he comentado al final del párrafo anterior, pero siempre he querido desactivar mootools-more.js a usuarios que no hayan iniciado sesión, por ejemplo en el foro Kunena que es una excelente extensión. Sin embargo, empecé a analizarlo y Kunena tanto desde mediaboxAdv.js como desde default-min.js llama a funciones de mootools-core y mootools-more y de forma sencilla tampoco se puede evitar. ¿que tal vez no sean necesarias? pues posiblemente sí sean necesarias a determinados usuarios porque por ejemplo en un foro se puede permitir que un usuario invitado publique un mensaje, entonces mootools sí que es necesario.

Conclusiones

Si has leído todo esto, podrás ver que el desarrollo del plugin Optimizar Mootools tal vez tenga los días contados porque no le veo una salida lógica que pueda satisfacer a todos los usuarios. La pena es que Google Libraries API no tiene en descarga mootools-more que sería algo más que perfecto. Otra opción que he testeado es descargar mi propia versión de mootools-more.js, el primer inconveniente que he encontrado, a fecha de hoy, es que la versión 1.4 da errores en Joomla!, así que habría que ir a generar la versión 1.3. La original de Joomla! tiene todas las opciones para su generación. He probado desactivar las últimas que tratan sobre distintos mensajes según la configuración del sitio, por ejemplo en:

español se dice: 12 de octubre de 2050

en inglés: October 12, 2050

Esto hace optimizar muchisimo el peso del script, pero... ¿Se podrá hacer sin ningún inconveniente?

Posiblemente sea ésta la mejor opción y el plugin Optimizar Mootools termine aquí su desarrollo... seguiré estudiando esto. Si tienes alguna opinión al respecto será más que bienvenida.

Última actualización: Domingo, 06 Noviembre 2011
Escribir un comentario
Antes de publicar un comentario, usted debe aceptar nuestras condiciones de uso: Condiciones de uso. Debido al spam, todos los comentarios serán moderados. Normalmente se responde en unos minutos, refresca los comentarios para comprobarlo.



 
Visitas: 8491158