Pipelines

Les pipelines sont un mécanisme récent et extrèmement puissant qui permet aux plugins d’intervenir dans la fabrication des pages publiques et privées.

De façon très générale, une fonction pipeline récupère un “flux”, le modifie éventuellement puis le renvoie. Par exemple, pour un flux de type texte, elle peut analyser le texte qu’elle reçoit et y rajouter des morceaux comme elle le désire. Celà se fait le plus souvent par des expressions régulières. Attention, vu que le plugin n’est pas tout seul à agir sur ce flux, il est fondamental de renvoyer ce qu’on a reçu, modifié ou non.

Déclaration

Un plugin s’intercale dans un pipeline en déclarant sa fonction dans le tableau global $spip_pipeline. Attention, cette déclaration doit ajouter sa propre fonction précédée d’un pipe |, ceci afin de ne pas écraser les insertions des autres plugins. Pour les plugins, cela est fait automatiquement par l’administration plugins d’après le fichier de définition plugin.xml vu dans le chapitre suivant, donc pas de souci si on utilise ce moyen.

Les pipelines disponibles

Voir le script ecrire/inc_version.php pour une liste actualisée.

Nom Type Description Flux Défaut
affichage_final P Contenu final Texte f_surligne, f_tidy, f_admin
affiche_droite E Colonne droite T1
affiche_gauche E Colonne gauche T1
affiche_milieu E Colonne milieu T1
ajouter_boutons E Boutons navigation OB
ajouter_onglets E Onglets sous bouton T2
body_prive E Corps de page Texte
exec_init E Initialisation ? T1
header_prive E Header Texte f_jQuery
insert_head P Header Texte f_jQuery
insert_js P js fichier ou inline T3
verifie_js_necessaire P Booléen js nécessaire T4
mots_indexation F Mots à indexer T5
nettoyer_raccourcis_typo T Nettoyer raccourcis typos Texte
pre_propre T Avant propre() Texte extraire_multi
post_propre T Après propre() car insurance ex()
pre_typo T Avant typo() Texte extraire_multi
post_typo T Avant typo() Texte quote_amp
pre_edition E Avant éditer objet T6 premiere_revision
post_edition E Après éditer objet T6 nouvelle_revision
pre_syndication P Flux RSS Texte
post_syndication P Flux RSS T7
pre_indexation F Avant indexation Texte
requete_dico F Recherche dictionnaire T8
agenda_rendu_evenement P Rendu agenda T9
taches_generales_cron F Tâches CRON Cron
calculer_rubriques F Calcul des rubriques Null

Types de plugins :

  • P : espace public
  • E : espace privé (ecrire/
  • T : Texte ou Typographie
  • F : Tâche de fond

    Types de flux

Type Composition
Texte Du contenu sous forme de texte
T1 array(’args’=>array(’exec’=>’…’),’data’=>’’))
T2 array(’data’=>$onglets,’args’=>$rubrique)
T3 array(“type” => “fichier/inline”,”data” => array())
T4 array(“page” => $page, “data” => “”)
T5 array(’args’=>array(’min_long’=>…),’data’=>array(mots))
T6 array(’args’ => array( ’table’=>’spip_…’, ’id_objet’=> … ), ’data’=>champs )
T7 array(lien, id_syndic, données)
T8 array(’args’=>array(’val’=>…,’min_long’=>…),’data’=>requète)
T9 array(’args’=>array(’evenement’=>$evenement, ’type’=>’ics/avec_heure/sans_heure’), ’data’=>$sum)
OB Objet Bouton
Cron Tableau de délais (secondes) par tâche

Tout cela est assez compliqué et en pleine mutation, il faut malheureusement souvent étudier le code du core ou des exemples life insurance quotes d’autres plugins pour comprendre comment utiliser les pipelines complexes. Les types “texte” sont en général plus faciles à mettre en oeuvre.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply