pre_boucle

Le pipeline pre_boucle permet de modifier les requêtes SQL servant à générer les boucles. Il agit après la prise en compte des critères (fonctions critere_NOM()) par le compilateur et avant l’appel des fonctions boucle_NOM().

Ce pipeline est appelé à la création de chaque boucle au moment de la compilation. Il reçoit un objet Boucle en paramètre, contenant les données issues de la compilation concernant la boucle parcourue.

Il est ainsi possible d’agir sur la boucle en fonction des critères qui lui sont passés, par exemple en modifiant les paramètres de sélections ou la condition where d’une boucle.

Exemple

Le plugin « mots techniques » ajoute un champ technique sur les groupes de mots de SPIP. Lorsqu’aucun critère {technique} n’est ajouté sur la boucle GROUPES_MOTS, la boucle est alors filtrée automatiquement, affichant uniquement les groupes ayant un champ technique vide. Ce fonctionnement pourrait aussi être réalisé en créant une fonction boucle_GROUPES_MOTS().

function mots_techniques_pre_boucle($boucle){
	if ($boucle->type_requete == 'groupes_mots') {
		$id_table = $boucle->id_table;
		$mtechnique = $id_table .'.technique';
		// Restreindre aux mots cles non techniques
		if (!isset($boucle->modificateur['criteres']['technique']) && 
			!isset($boucle->modificateur['tout'])) {
				$boucle->where[]= array("'='", "'$mtechnique'", "'\"\"'");
		}		
	}
	return $boucle;
}

Le tableau $boucle->where[] reçoit comme valeurs des tableaux. Ces tableaux ont 3 entrées : l’opérateur, le champ, la valeur. Ici, on ajoute $mtechnique='' par :

$boucle->where[]= array("'='", "'$mtechnique'", "'\"\"'");

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français