Carnet Wiki

créer nouveau pipeline

La doc est prolixe sur la manière d’utiliser des pipelines existants mais il n’est pas aisé de trouver comment créer un nouveau pipeline. C’est tout simple, voici comment, ainsi que le présente Tcharlss :

J’ai eu à faire ça récemment pour un plugin : dans une fonction qui retourne une liste, j’insère l’appel d’un pipeline pour permettre aux plugins de compléter/modifier cette liste.
En gros, ça donne ça, dans le cas exemple où le pipeline renvoie une liste de noms :

1 - Déclarer la pipeline dans le paquet.xml :
<pipeline nom="monpipeline" inclure="plugin_pipelines.php" action=""/>

2 - Dans plugin_pipelines.php :
function plugin_monpipeline($flux) { return $flux; }

3 - et enfin dans la fonction qui écrit dans spip_metas, faire appel au pipeline au moment opportun :

function plugin_nomdelafonction(){
    // liste des noms prédéfinie
    $liste_noms = array('nom1','nom2');
    // appel au pipeline pour permettre aux plugins de compléter ou modifier la liste
    $liste_noms = pipeline('monpipeline', $liste_noms);
    // écriture dans spip_meta (me souviens plus de la syntaxe exacte, tu corrigeras !)
    ecrire_meta('prefixe',$liste_noms);
}

Quand un autre plugin veut utiliser ce pipeline :

1 - Dans paquet.xml
<pipeline nom="monpipeline" inclure="autreplugin_pipelines.php" />

2 - Dans autreplugin_pipelines.php :

function autreplugin_monpipeline($liste) {
    $complement = array('nomX', 'nomY');
    $liste = array_push($liste, $complement);
    return $liste;
}
JLuc - Mise à jour :7 mai 2014 à 12h29min