Logotipo de Gesbit, por D-MO Este último par de días ha dado bastante de sí, entre el asunto de los diferentes usuarios que pueden registrarse en Gesbit, con diferentes "capacidades" para cada uno, en fin. De momento no me he caído con el teatro, aunque, no lo descarto.

Pero, esta tarde (por ayer) me he dedicado a perfilar el asunto de los plugins en Gesbit. De momento va la cosa mal. He preparado ya el primer plugin a modo de ejemplo, que hace uso del único "filtro" disponible en Gesbit por el momento.

Se trata filtrar, en este caso, el contenido de las entradas. Y el plugin que he dado en llamar "Highlighting Search", averigua si hay una búsqueda en marcha, vamos, si se está buscando algo en el blog mediante el formulario buscador correspondiente, y, si es así, "resalta" las palabras que se están buscando en el texto del contenido de las entradas.

Es algo muy sencillo, pero, además de útil, me ha servido para tocar un poco el tema de los plugins, como digo. ¿Qué es un plugin en Gesbit? Un plugin se compone de lo siguiente, a día de hoy, y como obligatorio: un archivo "gbplugin.xml" que contiene información sobre el plugin; un script PHP que implementa una clase derivada de la clase "GbPlugin".

Básicamente, de eso se trata, por el momento. Gesbit "busca" los plugins disponibles en el directorio de plugins, y "lista" todos sus subdirectorios, que, esta es otra, cada plugin ha de estar en un subdirectorio del directorio de plugins, que no lo había dicho.

La clase "PluginManager" de Gesbit se encarga de localizar los archivos de información de los plugins, de comprobar que su información es válida, de requerir los archivos que implementan la clase del plugin en cuestión, y, si el plugin lo requiere, de globalizar el objeto del plugin para que esté disponible dentro del tema en uso en Gesbit.

El script que implementa la clase del plugin, derivada de "GbPlugin", contiene una "función de registro", o sea, la función "RegisterGbPlugin", que es ejecutada por el manejador de plugins, y que retorna una instancia de la clase del plugin. El plugin también implementa un método de nombre "FilterCallBack".

A dicho método llamará el manejador de plugins cuando se requiera un filtro de contenido. Y le pasará dos parámetros, el primero, el identificador del filtro, y, el segundo, el contenido que hay que filtrar. Huelga decir que "FilterCallBack" puede hacer "algo" con dicho contenido (como pueda ser lo que hace el plugin que resalta determinadas palabras del mismo), y, en todo caso, retornar el contenido de nuevo.

De momento el asunto parece funcionar medio bien. Ya veremos a ver cómo sigue. Una de las cosas conque me he topado, por ejemplo, es con que a veces, se hace necesario por parte de un plugin que el usuario "lo llame". Es decir, que dentro del tema en uso en Gesbit, se haga una llamada a una función que pertenece a un determinado plugin.

Pero, los plugins en Gesbit (por el momento) son clases, y lo que el usuario debe llamar es un método público de dicha clase. El manejador de plugins se encarga, si el plugin lo requiere (esto se establece en el archivo que contiene la información del plugin), de "globalizar" el objeto de la clase del plugin, de modo que el usuario pueda usarlo en los temas de Gesbit.

Estoy seguro de que me voy a topar con no pocos problemas. Por ejemplo, los plugins que requieran algún tipo de configuración. De alguna manera, como se hace en WordPress, por ejemplo, habría que permitir que los plugins mostraran contenido en el apartado de administración de Gesbit, así como que pudieran añadir "items" en el menú y/o submenú.

De momento... eso está por ver. Pero, en fin, parece que con algunos sencillos plugins que puedan "filtrar" determinado contenido ya puede contar Gesbit... sin ir más lejos, el plugin de ejemplo, que resalta las palabras de la búsqueda en curso, pues oyes, no está mal, es útil, hace algo práctico. Aunque espero que los plugins de Gesbit no se queden ahí.