Como adelantaba en esta entrada, estaba pendiente de organizar una especie de "gestor" de archivos CSS y JavaScript que pueden ser necesarios en los temas y plugins de Gesbit. Hasta ahora temas y plugins iban por separado, en esta cuestión, y, esto hacía probable que terminara incluyéndose código duplicado. He hecho los cambios necesarios en Gesbit para tratar de solucionar este asunto.
Y no es que se encontrara una solución ideal, puesto que creo que, otra vez más, en este asunto sólo podemos tratar de paliar un posible problema, pero, que, en todo caso, puede llegarse a producir, en un momento dado. Gesbit se encarga ahora de comprobar el "hash" MD5 de los archivos que temas y plugins necesiten, y no incluirá archivos duplicados basándose en dicho "hash".
Esto no garantiza que no se pueda incluir código duplicado, puesto que, por ejemplo, un plugin podría usar una versión de la biblioteca jQuery para JavaScript, y, otro plugin, podría usar otra versión, con lo que sus MD5 ya no coincidirían a buen seguro, y Gesbit terminaría por añadir ambas versiones. Ahora bien, esta circunstancia no parece fácil de evitar, y hasta puede que no sea posible.
Lo único que queda, es, por lo tanto, tratar de paliar el probable problema de la inclusión de código duplicado. De este modo, tal como se implementa ahora este asunto, si un plugin usa la última versión de jQuery, el tema "activo" de Gesbit también la usa, y otros plugins la usan también... Gesbit incluirá el archivo correspondiente una sola vez. Y con esto se cumple nuestro objetivo, si no en todos los casos, sí en varios de ellos.
Lo dicho para el JavaScript se aplica también para los archivos CSS, hojas de estilo en cascada, que también pueden ser requeridas por el tema de Gesbit y por los plugins para el mismo. En este caso, sin embargo, será más complicado que dos archivos CSS sean iguales, pero, el sistema actual garantiza ya que dichos archivos se incluyan entre las etiquetas HTML "head" del tema en uso en Gesbit.
Y esto último es importante, puesto que, tanto el JavaScript como el CSS deben "cargarse", precisamente, en ese lugar, y no como venía haciéndose hasta ahora, si era necesario, al principio del "body" de la página en cuestión. Para conseguir esto último, y, puesto que las "plantillas para temas" se basan en buena medida en las de Wordpress, he optado en parte por la solución que se ofrece en este otro gestor de blogs.
Ahora los temas de Gesbit, precisamente antes de que la etiqueta HTML "header" sea cerrada, deben hacer una llamada a cierto método de la clase "G" de Gesbit, que será la encargada de poner en marcha el sistema de inclusión de archivos CSS y JavaScript necesarios. Huelga decir que los temas existentes en Gesbit se aplican el cuento y ya utilizan esta nueva forma de incluir archivos CSS y JavaScript.
Por otro lado, todo esto queda explicado ya en las páginas correspondientes de la wiki de Gesbit: Desarrollo de temas y Desarrollo de plugins para Gesbit. Como digo, no es que sea una solución perfecta, y tal vez esta no exista, pero, en todo caso, sí que es un comienzo, y también una especie de declaración de principios: el código duplicado no gusta en Gesbit y será en lo posible evitado. Quiero agradecer una vez más a xEsk el que me acuciara a trabajar en este y otros asuntos en Gesbit. Y también su paciencia conmigo. ;)