[SPIP 1.9 et GD2] Si vous suivez ces trucs et astuces depuis un moment, vous avez pu constater que l’utilisation des filtres graphiques devient réellement impressionnante lorsqu’on combine plusieurs filtres successifs. Dans l’exemple du titre en relief, le code SPIP devient interminable, dès lors que non seulement on applique une série de filtres mais que de plus on « fusionne », avec image_masque
, deux images calculées.
Et plus votre maîtrise des filtres graphiques progressera, plus vous aurez des idées d’utilisations aussi imaginatives que possibles, et plus le code s’alourdira.
L’idée consistera alors à ne plus appeler successivement une interminable série de filtres, mais à se fabriquer une fonction PHP qui, servant de filtre SPIP, fabriquera directement la longue combinaison de filtres. Votre code SPIP deviendra plus lisible et, par ailleurs, le code PHP de votre fonction spécifique sera certainement plus lisible (et donc facile à modifier et à maintenir).
Reprenons simplement le code auquel nous étions parvenu pour réaliser le texte en relief :

Si vous le copiez-collez dans un éditeur texte (c’est le but !), vous constatez qu’il est assez lourd :
— sept filtres graphiques succesifs,
— un filtre utilisé à l’identique deux fois...
Remplaçons maintenant ce code par l’appel à un unique filtre :
Dans mes_fonctions
, on insère la fonction PHP correspondante, qui tout simplement synthétisera la succession de filtres :
C’est tout de même beaucoup plus lisible !
Notez tout de même cette « astuce » : certains filtres graphiques, tels que image_typo
et image_masque
, pour pouvoir passer une liste de paramètres indéterminés et dans n’importe quel ordre, doivent utiliser un format de variables très spécifiques, en tant que chaînes de caractères. D’où les apostrophes, par exemple, pour indiquer :
Notez encore, par rapport aux appels effectués directement en tant que filtres SPIP, qu’ici on retrouve la syntaxe de PHP : les variables sont entourées de parenthèses, alors que dans les squelettes, elles sont passées entourées d’accolades.