SPIP 1.9 - Los Plugins

El sistema de plugins está revolcuionando las funcionalidades de SPIP sin perder su robustez y flexibilidad. Los hay de todo tipo y sabor. ¿Por qué no haces el tuyo ? Aquí una introducción al desarrollo de plugins

El sistema de plugins fue reintroducido en la versión 1.9. Este sustituye al antiguo sistema de plugins que se había probado durante la fase de la versión 1.8 y después fue descartado.

La descripción del funcionamiento del sistema de plugin es aplicable a partir de la version 1.9.

2Activar la gestion de Plugins2

La gestión se activa a partir del momento que un directorio ’plugins’ existe en la raíz del sitio (al nivel de ecrire, IMG, dist ...)
El botón de administración de los plugins está en el menú Configuración, y sólo aparece cuando lal interfaz completa se selecciona, solamente para los administradores.

Instalar un plugin
Los plugins están por el momento disponibles en spip-zone

A través de svn puede hacer un checkout del directorio _ plugins _ sobre su directorio local /plugins para instalar todos los plugins disponibles, o copiar simplemente los directorios de plugins que le interesen en su directorio /plugins.

La instalación del directorio no activa automáticamente el plugin.

Activar un plugin

Dentro del menú Configuración, Administración de plugins
SPIP detecta entonces todos los plugins instalados y los muestra en una lista.

Cada plugin tiene un desplegable que permite mostrar los detalles relativos al plugin en cuestión (versión, directorio, autor, descripción, vínculo hacia el página inicial del plugin)

Seleccionar la casilla ’ activar el plugin ’ y luego validar para que el plugin entre en funcionamiento

Cuando varios plugins están activos, se listan en el orden en que SPIP los carga. Es posible modificar este orden con las flechas que aparecen a la derecha del titulo de cada plugin.

Cuando varios plugins actúan sobre el mismo tratamiento (añadir iconos, formateado del texto...) se aplican en el orden indicado por la lista.

Cuando se establece todo

La activación de plugins pasa por una fase de comprobación de conformidad mínima (declaraciones suficientes, presencia de los ficheros que deben incluirse...) pero todo no es comprobable facilmente. Es posible que un plugin erróneo (sobre todo en este período de desarrollo) genere un error definitivo. Para recuperar el acceso al sitio « a mano » (desactivar manualmente un plugin problemático), basta con renombrar el directorio del plugin, o bien suprimir las escrituras charger_plugin_xxx.php del directorio ecrire/data,

Crear un plugin

2Cómo crear su plugin :2

Crear un directorio ’miplugin’ dentro de /plugins

SPIP reconocerá el plugin con ayuda de su fichero de descripción plugin.xml :

<plugin>
	<nom> <!-- Nombre del plugin -->
	Nada
	</nom>
	<auteur>	<!-- Autor del Plugin -->
	Comunidad spip-es.net
	</auteur>
	<version>
	0.1
	</version>
	<etat>
	test
	</etat>
	<description>
¡El único plugin spip del mundo que no hace nada, pero que lo hace bien!
	</description>
	<options> <!--fichero cargado a cada hit-->
	mes_options.php
	</options>
	<fonctions> <!-- fichero cargado en cada cálculo de página->
	mes_fonctions.php
	</fonctions>
	
<!--ahora clase de implementation: listado prefijado de la llamada de función Nada:: las funciones fuera de este listado no pueden llamarse. Este parámetro es obligatorio y debe ser no vacío.
	-->
	<prefix> 
	Nada
	</prefix>
	<!--  Definición de las funciones insertadas en la tubería (pipeline) ->
	<pipeline>
		<nom>post_propre</nom>
		<action>leFiltre</action>
	</pipeline>
	<pipeline>
		<nom>ajouter_boutons</nom>
		<action>ajouterBoutons</action>
		<inclure>Nada.php</inclure>
	</pipeline>
	<pipeline>
		<nom>ajouter_onglets</nom>
		<action>ajouterOnglets</action>
		<inclure>Nada.php</inclure>
	</pipeline>

	<!-- El parámetro acción es opcional: en su ausencia se llama al método de la clase que lleva el nombre del pipeline . El parámetro inclure es opcional.-->

</plugin>

2Balizas de descripción :2

  • <nom> permite definir el nombre del plugin tal como aparecerá en el panel de configuración.
  • <version>permite dar el número de versión del plugin
  • <etat> permite definir el estado del plugin, entre dev (desarrollo), experimental, test (prueba), stable (estable).
  • <auteur> permite listar a los autores del plugin. Se pueden utilizar atajos tipográficos y cadenas de idiomas en este campo.
  • <description> permite describir el objetivo del plugin. Se pueden utilizar atajos tipográficos y cadenas de idiomas en este campo.
  • <lien> permite dar un vínculo HTML hacia el homepage del plugin que da más información sobre su funcionamiento.

2Balizas de implementación :2

  • <options> permite definir un fichero que sera cargará en cada acceso.
  • <fonctions> permite definir un fichero que se cargará a cada cálculo de página.
  • <prefix> permite definir el nombre de los prefijos de función definidas por el plugin. Por razones de cohabitación sana con sus pequeños amigos plugins, todas las funciones consustanciales a su plugin deberán comenzar por este prefijo. Observe los ejemplos del plugin « Nada » para ver cómo hacer.

La única dificultad es prefijar las declaracions de función y escribir sus llamadas de función se la siguiente manera :

$truc = Nada_mi_funcion($val);.

  • <pipeline> permite definir un punto de inserción del plugin en una tubería de tratamiento. Para eso se utilizan los tags siguientes :
    • <nom> da el nombre de la tubería o inserta la llamada al plugin.
    • <action> da el nombre de la función que debe llamarse (sin el prefijo que será añadido automáticamente por SPIP).
    • <inclure> da el nombre de un fichero que debe incluirse para que la función esté disponible.

Las etiquetas <nom>, <version> y <prefix> son obligatorias. Las otras son opcionales.

Un detalle es que no es posible utilizar un nombre de función idéntico al nombre de prefijo (La funcion Nada_nada() se rechazará porque es peligrosa - para lo curiosos puedo contar la historia... -), ni tampoco los nombres de funciones « install », « uninstall » y « configure » que se reservan para evoluciones que ya se conjeturan.

Por razones de performance, se aconseja ubicar apropiadamente las funciones pertenecientes a un plugin en ficheros separados, para que solamente las funciones requeridas estén cargadas en una inclusión.

Y para más respuestas a sus cuestiones no tema observar todos los ejemplos disponibles sobre en el SPIP ZONE

Para más información, ver :

-  El anuncio en la lista spip core
-  Los plugin en el spip zone
-  los « candidatos a plugin » propuestos en el blog

Listas de tuberías (pipelines)

  • delete_tables
  • ajouter_boutons añade un botón en la barra de botones del ./ecrire. Por ejemplo :
	function Nada_ajouterBoutons($boutons_admin) {
		// si es un/a adminitrador/a
		if ($GLOBALS['connect_statut'] == "0minirezo") {
		  //   se ve el botón en la barra "Edición del sitio"
		  $boutons_admin['naviguer']->sousmenu['nada_poo']= new Bouton(
			'../'._DIR_PLUGINS.'nada/ecrire/img_pack/nada-24.png', 'Nada !');

		  // y se accede a la configuración
		  $boutons_admin['configuration']->sousmenu['nada_config']= new Bouton(
			'../'._DIR_PLUGINS.'nada/ecrire/img_pack/nada-24.png', 'Nada ?');
		} else {
		  //si no, se ve un icono de más en la barra de cabecera
		  $boutons_admin['nada_poo']= new Bouton(
			'../'._DIR_PLUGINS.'nada/ecrire/img_pack/nada-24.png', 'rien !');
		}

		return $boutons_admin;
	}
  • ajouter_onglets añade un solapa sobre una página, tomando una tabla de parámetros de entrada :
    • ’data’=> la tabla
    • ’args’=> el nombre de la página desde la cual se hace la llamada
  • pre_indexation
  • pre_syndication
  • post_syndication
  • pre_typo
  • post_typo
  • pre_propre
  • post_propre

Nota del traductor : La documentación de los pipelines no está desarrollada. Para una lista exhaustiva de ellos, ver el archivo ./ecrire/inc_version.php el código correspondiente al array $spip_pipeline.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom