THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Il se peut qu'on ait besoin de paramètres dynamiques sur les boucles.
Dans mon cas, j'avais besoin d'un paramètre à la date du jour, obtenu par la fonction PHP date("Y-m-d")

J'ai donc créé un filtre permettant d'utiliser des fonctions PHP et comme celle-ci devait être placée avant le parsage des boucles, il a fallu ajouter un "pré" filtrage.


Donc, dans le fichier fonctions/filtre.php :

function preBouclefiltres($texte){
	//Permet d'utiliser des fonctions PHP. A utiliser avec précaution
	//exemple d'utilisation : #PBFILTRE_FONCTION_PHP{date("Y-m-d");}
	if(strstr($texte,"#PBFILTRE_FONCTION_PHP")){
		preg_match_all("`\#PBFILTRE_FONCTION_PHP\{([^\}]+)\}`",$texte,$cut);
		
		$tab1="";
		$tab2="";
		
		for($i=0; $i<count($cut[1]); $i++){
			$tab1[$i]="#PBFILTRE_FONCTION_PHP{".$cut[1][$i]."}";
			$tab2[$i]=(string)eval("return ".$cut[1][$i]);
		}
		
		$texte=str_replace($tab1,$tab2,$texte);
	}
	
	return $texte;
}

Et dans le fichier fonctions/moteur.php, fonction "analyse", juste après le traitement dans le cas d'un formulaire :

$res=preBouclefiltres($res);

I don't know what I want, but I know how to get it

Offline


Selon les paramètres dynamiques que tu as besoin d'utiliser tu peux aussi utiliser #SET et #GET.

Offline


Et pour évaluer une expression PHP, le filtre phpexpr.

#SET et #GET interprètent les filtres "a la volée", si bien que le problème que tu décris est contourné. Tu peux donc faire:

#SET{toto,#MONFILTRE(...)}

à partir de cet endroit, #GET{toto} ne vaut pas "#MONFILTRE(...)", mais le résultat de #MONFILTRE(...)

<THELIA_bouboucle type="truc" param="#GET{toto}" ...>


OpenStudio Toulouse

Offline


OK, merci. C'est noté. Je n'avais pas remarqué cette possibilité (ou peut-être qu'elle n'existe pas sur la version que j'utilise).


I don't know what I want, but I know how to get it