Les pipelines de Sarka-SPIP

mardi 30 mars 2010
par  _Equipe_
popularité : 71%

Introduction

Les pipelines de Sarka-SPIP ont pour but de faciliter la personnalisation du squelette en autorisant l’ajout de noisettes à des endroits précis sans modifier les fichiers source du dit squelette. Cette fonctionnalité est disponible depuis la version 3.0.1 de Sarka-SPIP mais a été fortement améliorée dans la version 3.0.2.

Un pipeline est un point d’entrée dans le code d’un programme. Ce point d’entrée autorise l’injection d’un code externe au programme source. Le code injecté reçoit le contexte du programme offrant le pipeline.

Dans Sarka-SPIP, tous les pipelines sont situés dans les zones principales du squelette, à savoir, le bandeau, le pied de page et les deux colonnes. La position de ces pipelines est définie une fois pour toute dans le squelette : la personnalisation induite est donc limitée à ces emplacements spécifiques.

Mise en œuvre dans le squelette

D’un point de vue technique, les pipelines sont matérialisés par un appel à la balise #PIPELINE dans le code HTML du squelette comme l’illustre le code ci-dessous inclus dans le fichier noisettes/navigation/inc_menu_pages_speciales.html :

[(#PIPELINE{
	menu_pages_speciales_fin,
	[(#ARRAY{args, [(#ARRAY{position, #ENV{position}, classe_li, #GET{classe_li}, no_menu, #GET{no_menu}})], data, ''})]}
)]

Le premier argument désigne l’identifiant du pipeline, menu_pages_speciales_fin. Cet exemple concerne donc le pipeline permettant d’ajouter une entrée à la fin du menu des pages spéciales.

Le second argument est le contexte, c’est-à-dire un tableau de tous les paramètres fournis en entrée du script appelé. Dans notre exemple, les paramètres disponibles sont « position », « classe_li » et « no_menu ». Le script appelé pourra utiliser ces paramètres via la balise #ENV de la manière suivante : #ENV{position}.

Description des pipelines

Le tableau ci-après liste tous les pipelines proposés par le squelette, leur identifiant, la position dans la page et le contexte.

PositionIdentifiantContexte
Ajout en début de colonne extra _PERSO_COLONNE_EXTRA_DEBUT dépend de la page affichée
Ajout en fin de colonne extra _PERSO_COLONNE_EXTRA_FIN dépend de la page affichée
Ajout en début de colonne navigation _PERSO_COLONNE_NAVIGATION_DEBUT dépend de la page affichée
Ajout en fin de colonne navigation _PERSO_COLONNE_NAVIGATION_FIN dépend de la page affichée
Ajout en fin du menu des pages spéciales _PERSO_MENU_PAGES_SPECIALES_FIN position, classe_li, no_menu
Ajout en début de la partie haute du bandeau _PERSO_BANDEAU_HAUT_DEBUT id_rubrique
Ajout en fin de la partie haute du bandeau _PERSO_BANDEAU_HAUT_FIN id_rubrique
Ajout en début de la partie basse du bandeau _PERSO_BANDEAU_BAS_DEBUT id_rubrique
Ajout en fin de la partie basse du bandeau _PERSO_BANDEAU_BAS_FIN id_rubrique
Ajout en début de pied _PERSO_PIED_DEBUT -
Ajout en fin de pied _PERSO_PIED_FIN -

Utilisation des pipelines

Pour utiliser les pipelines et personnaliser le squelette il est nécessaire de déclarer les pipelines utilisés et les noisettes ajoutées dans le fichier mes_options.php en suivant la syntaxe ci-dessous :

define('_PERSO_COLONNE_EXTRA_DEBUT', 'noisettes/extra/noisette1:noisettes/noisette2:noisette3');

Dans l’exemple ci-dessus, les noisettes seront insérées dans l’ordre prescrit - de 1 à 3 - au début de la colonne « Extra ». Le chemin des noisettes est relatif au répertoire squelettes/ dans lequel elles doivent être placées mais l’arborescence sous squelettes/ est à votre discrétion. L’extension des noisettes n’est pas précisée car ce sont toujours des fichiers .html.

Les noisettes sont des fichiers dont la structure est normalisée par le squelette Sarka-SPIP. Il est donc essentiel de conserver cette structure pour créer des noisettes personnalisées cohérentes avec le design du site. Consulter l’article La structure des noisettes de Sarka-SPIP à cet effet.