[Résolu] test de presence d'un plugin et filtres du plugin

tester avec spip 4.3.0 et spip 4.2.11

Je teste la présence du plugin centre_image et dans si oui j’utilise les filtres centre_image_x et centre_image_y de ce plugin.
SI je désactive le plugin j’obtiens : Filtre centre_image_x non défini, Filtre centre_image_y non défini
comment tester leur présence ?

#SET{pos,center center} 

[(#PLUGIN{centre_image}|oui)
					[(#SET{x,#GET{photo}|centre_image_x|mult{100}})] 
					[(#SET{y,#GET{photo}|centre_image_y|mult{100}})] 
						#SET{pos,#GET{x}%  #GET{y}%} 
					]

Bonjour,
En utilisant une boucle CONDITION, est-ce que ça fonctionne mieux ?

<BOUCLE(CONDITION){si #PLUGIN{centre_image}}>
	BlaBla
</BOUCLE>

même problème avec une boucle

Je ne sais pas si ça répond à ton besoin mais, si le plugin centre_image n’est pas activé, focus est ignoré et c’est center qui est pris en compte.

Donc il est possible d’utiliser [(#FICHIER|image_recadre{2:1, -, focus})] avec ou sans centre_image.

dans certains cas, j’utilise une image en background avec background-position:#GET{pos,center center}; background-repeat: no-repeat; background-size:cover;
pos étant calculé ```
[(#SET{x,#GET{photo}|centre_image_x|mult{100}})]
[(#SET{y,#GET{photo}|centre_image_y|mult{100}})]
#SET{pos,#GET{x}% #GET{y}%}

dans  ce cas si le plugin n'est pas activé ... il y a une erreur au lieu de center center

remarque quand le plugin est activé .... c'est super avec le positionnement. Au pire je peux obliger a activer le plugin...

Et dans la doc de SPIP : |appliquer_filtre et |appliquer_si_filtre - SPIP

merci C 'est ce qu’il faut appliquer

[(#BALISE|appliquer_filtre{nom_du_filtre})]

je l’ai déjà utilisé… mais complétement oublier… un lien avec la page

[(#PLUGIN{prefixe_du_plugin}|oui) blablabla...]

serait utile
merci

attention Il faut mettre le test de la présence du plugin sinon on a une erreur sur le mult{100} en l’absence du plugin

#SET{pos,center center}
				 [(#PLUGIN{centre_image}|=={1}|oui)
					[(#SET{x,#GET{photo}|appliquer_filtre{centre_image_x}|mult{100}} )] 
					[(#SET{y,#GET{photo}|appliquer_filtre{centre_image_y}|mult{100}} )] 
					#SET{pos,#GET{x}%  #GET{y}%} 
					)]

pb résolu

Et si tu rajoutes un |sinon{1} avant le mult ?

avec sinon|1 la position vaut "100% 100% " au lieu de center center .
on cale le background sur le bas a droite au lieu du centre . C’est une question de choix mais cela fonctionne aussi.

Alors 0.5 au lieu de 1 ?

Tant mieux si ça marche avec |appliquer_filtre .

Mais devoir utiliser ça plus [(#PLUGIN{centre_image}|oui) ... ] qui englobe, ce ne serait pas un bug ?

En tout cas ça ressemble à une obligation d’utiliser ceinture + bretelles…

Instinctivement, j’aurais pensé que ce code :

[(#PLUGIN{centre_image}|oui)
    [(#GET{photo}|centre_image_x)] 
    ...
]

fonctionnerait.
Qu’est ce qui l’en empêche ?

sans |appliquer_filtre cela ne marche pas si il n’y a pas le plugin .
par contre cela peut marcher avec |appliquer_filtre sans [(#PLUGIN{centre_image}|oui) ... ]
mais si il n’y pas le plugin on applique plusieurs filtres pour rien… je ne sais pas si il vaut mieux le mettre ou non mais cela fonctionne avec ou sans

[(#SET{x,#GET{photo}|appliquer_filtre{centre_image_x}|sinon{0.5}|mult{100}} )] 
[(#SET{y,#GET{photo}|appliquer_filtre{centre_image_y}|sinon{0.5}|mult{100}} )] 
#SET{pos,#GET{x}%  #GET{y}%}

se sert des positions si il y a le plugin centre_image et met 50% 50% ( ce qui est equivalent a center center )en son absence.