Qu’est-ce qu’un pipeline ?

Un pipeline permet de faire transiter un code entre plusieurs intermédiaires (des fonctions) pour le compléter ou le modifier. {{{Déclaration dans un plugin}}} Chaque plugin peut utiliser un pipeline existant. Pour cela, il déclare son utilisation dans le fichier paquet.xml de la sorte :
<pipeline nom="header_prive" inclure="cfg_pipeline.php" />
-* Nom : indique le nom du pipeline à utiliser, -* Inclure : indique le nom du fichier qui contient la fonction à exécuter au moment de l’appel du pipeline (prefixPlugin_nomPipeline()). {{{Déclaration hors plugin}}} Une utilisation d’un pipeline en dehors du cadre d’un plugin reste possible. Il faut alors déclarer son utilisation directement dans le fichier config/mes_options.php :
$GLOBALS['spip_pipeline']['nom_du_pipeline'] .= "|nom_de_la_fonction";
Par exemple pour s’insérer du pipeline "insert_head" :
// initialiser index "insert_head" à string vide si besoin:
if (!isset($GLOBALS['spip_pipeline']['insert_head'])) {
	$GLOBALS['spip_pipeline']['insert_head'] = '';
}
 
// Ajout dans le pipeline "insert_head" :
$GLOBALS['spip_pipeline']['insert_head'] .= "|nom_de_la_fonction";
 
// Et par ailleurs !:
function nom_de_la_fonction($flux) {
	return $flux .= "Ce texte sera ajoute";
}
La fonction appelée doit être connue au moment de l’appel du pipeline, le plus simple étant de la déclarer comme ici pour la fonction nom_de_la_fonction dans le fichier d’option.
À noter que SPIP utilise un cache des pipelines utilisés et que toute nouvelle déclaration nécessite de recalculer ce cache. Cela se fait en visitant la page « Gestion des plugins » dans l’espace privé (?exec=admin_plugin).

Auteur Matthieu Marcillaud Publié le : Mis à jour : 26/02/20

Traductions : English, français, Nederlands