SPIP

[ar] [bg] [ca] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [sv] [tr] [vi] [zh] Espace de traduction

Descargar la última versión

SPIP 1.9.2 SPIP 1.9.2

Crear un primer plugin

Julio de 2007

Todas las versiones de este artículo:


Los plugins se crean en el mismo lugar en que se encuentran los que ya están instalados en el sistema, es decir dentro de la carpeta plugins/ (Ver « Instalar plugins »).

El sistema de plugins se basa en en la búsqueda de rutas conocidas de una lista bien precisa. Los tecnófilos llamarán a esto spip_path [1]. Cuando se analiza si el plugin es válido se decide si incluir o no el directorio asociado en esta lista. Para que un plugin sea válido debemos crear :

-  Una carpeta plugins/ en la raíz del sitio. La consecuencia directa de esta acción es activar la interfaz de administración de plugins. El primer resultado es la aparación del botón « Gestión de los Plugins » en el menú « Configuración del sitio » del espacio privado (solo en Interfaz completa).

-  Una subcarpeta mi_primer_plugin/ para el plugin que se pretende escribir. Para indicarle a SPIP que es lo que el plugin debe hacer, hay un archivo de descripción que se llama plugin.xml, que se crea en la misma carpeta del plugin. Es un archivo con una sintáxis rígida pero relativamente sencilla como esta:

Este es un archivo XML que solo tiene las siguientes etiquetas obligatorias.

-  La etiqueta nom puede ser internacionalizado mediante otro tag llamdo multi (ejemplo: <nom><multi>My first plugin[fr]Mon premier plugin[es]Mi primer plugin</multi></nom>. Es el título del plugin
-  La etiqueta version es púramente informativo. No hay una regla precisa para gestionar los números de versión. Le toca al desarrollador administrarlo él mismo. En el futuro, sin embargo es posible que este valor se utilice para administrar eventuales dependencias y un mínimo de coherencia entre SPIP y los plugins.
-  La etiqueta prefix es crucial. Primero que nada es importante asegurarse de que este valor no se repite en los plugins que tengo instalados. En segundo lugar define el prefijo con el que vas a nombrar a las funciones que programés en PHP y que serán los elementos motores del plugin. De esta manera, si conviven plugins con funciones que manejan cosas similares, va a ser imposible que se cometan errores por la colisión de nombres. Es lo que se suele llamar « namespace ».

Si bien hasta ahora no hemos hecho nada que tenga algún efecto, por lo menos esto ya nos deja activar el plugin en la interfaz de administración :

Para hacer esto es necesario hacer click en el checkbox al lado del nombre del y luego hacer click en el botón « validar ». El título se pondrá de Color (dependiente de la configuración de colores de SPIP).

Por diversión eliminá alguno de las etiquetas y constatá que SPIP te indica que falta alguno de ellos.

*-*-*

Es posible poner otros elementos en el archivo plugin.xml :

-  La etiqueta <etat> (estado): 4 valores posibles. La ausencia de esta estiqueta, o si está presente pero vacía, el plugin se considera como "en desarrollo". El funcionamiento del plugin no se ve influenciado por este tag. Debe indicar de un vistazo mediante un símbolo coloreado el estado del plugin.

estado símbolo significado
dev triangulos negros En desarrollo. Muchos bugs posibles. Tal vez ni funciona.
test cruz naranja Las funciones principales están operativas y funcionando. L@s desarrolladoraes cuentan con la comunidad para reportar bugs que puedan surgir o sugerencias ergonómicas o de interfaz, por ejemplo.
stable verde liso Completamente operativo. Sin bugs, en teoría
experimental guión rojo ¡Para amantes del riesgo!

-  Las etiquetas <auteur> y <description> son opcionales y funcionan como el encabezado de un artículo (los enlaces son permitidos) y son utilizados para dar información básica del plugin. En el siguiente código:

Como consecuencia se verá :

Nótese que es necesario codificar los caracteres acentuados, las ñ y los propios del idioma como entidades html (&eacute; para é por ejemplo.)

*-*-*

Si ponés en el mismo nivel que plugin.xml un archivo esqueleto.html, tu plugin una vez activado, permite la utilización de dicho esqueleto que será accesible a llamadas desde el navegador mediante la notación « usual » : tusitio.net/spip.php?page=esqueleto.html. Se tiene así un principio, aunque simple, de sobrecarga. Este tema será abordado con mayor profundidad en otro tutorial.

*-*-*

Para ilustrar esta demostración vamos a realizar un plugin que va a colorear cada ocurrencia de la palabra « spip » en un texto. Para esto vamos a colocar en la carpeta del plugin 2 archivos con las funciones que van a realizar el trabajo y le vamos a indicar a spip sus nombres mediante un par de tags extra en el archivo xml:

He aquí la descripción de los dos etiquetas agregadass:

-  <fonctions>: contiene el nombre de un archivo que será cargado cada vez que se recalcule. Es el equivalente del archivo mes_fonctions.php. No es utilizado por el sitio público porque solo se llama cuando se recalcula la caché. En este archivo se guardan los filtros o la definición de balizas o criterios.
-  <options>: contiene el nombre de un archivo que se cargado cada vez que se llama a la página. Equivale al archivo mes_options.php para cada plugin. También se utiliza en cada carga de la espacio privado del sitio.

Crear los dos archivos con el contenido siguiente:

exemple_fonctions.php :

exemple_options.php :

Atención! Hay nombres de archivos que es preferible no usar en los plugins: en el marco de una lista de directorios conocidos, el SPIP s’atura siempre el primer archivo encontrado. Si el archivo de la etiqueta <fonctions> se llamase mes_fonctions.php, probablemente haya confusión con el archivo de tu carpeta de esqueletos si existe y sobre todo si otros plugins son programados con este mismo nombre de archivo, el sistema se puede desorientar. Lo mismo sucede con mes_options.php que está guardado en la carpeta ecrire/ así también como para los archivos de idiomas local_xx.php en el que se prefiere otro método descrito en un tutorial dedicado a la sobrecarga de código. (surcharge de code)

Por lo tanto: evitá los nombres « comunes » tales como mes_options.php y mes_fonctions.php.

Veremos en otro artículo como "sobrecargar" los directorios de SPIP. Tener en cuenta que los nombres de directorio como « modeles », « formulaires », « inc », « action », etc... son para usar con criterio.

Finalmente, tené el cuidado de ser muy exacto con el asunto de los nombres de archivos dentro de plugin.xml, la interfaz de gestión es muy caprichosa para agregar nuevas balizas (mensajes de error que detienen el servidor).

Ahora sí, acá está, este plugin aporta un nuevo filtro para tus esqueletos. Probá [(#TEXTE|colore_spip)] dentro del esqueleto article.html por ejemplo.

*-*-*

Se pueden instalar todos los plugins en la carpeta plugins/, pero también se pueden crear subcarpetas para categorizar los plugins que están instalados o en desarrollo.

Así para el arbol de carpetas siguientes:

|plugins/
|
|-- mon_premier_plugin/
|-- mes_raccourcis_supplementaires/
    |
    |-- raccourcis_2/
    |-- raccourcis_3/
|-- mes_autres_plugins/
    |
    |-- raccourcis_4/
    |-- raccourcis_5/

Se tendrá la interfaz de administración siguiente:

Para ir mas lejos

Una vez introducido el tema se te pueden venir a la cabeza dudas, interrogantes técnicos relacionados con la programación en php.

El sitio de documentación técnica está concebido para responder a esas preguntas y dudas. En lo referente a los plugins, podés encontrar en esta dirección una primera aproximación al tema de los puntos de entrada de spip (o « pipeline »)


Ver el esqueleto de esta página Sitio desarrollado con SPIP | Espacio de los y las traductoras | Espacio privado