Voici un filtre qui permet de transférer le contenu de la balise #ENV d’un squelette à un squelette inclus.
Mise en œuvre
Son utilisation est assez simple, il faut :
- placer le code suivant dans votre fichier mes_fonctions.php [1] :
- function env($env,$par='') {
- if($par) {
- return entites_html($env[$par]);
- }
- return $env;
- }
- dans le squelette qui fait l’inclusion, ajouter
à l’inclusion :
- dans le squelette inclus, pour acceder à un paramètre d’url de nom mon_param :
Exemple
Si on utilise les mots-clés pour inclure certaines noisettes :
<INCLURE {fond=squelettes_articles/#TITRE} {id_article}>
</BOUCLE_coeur_article>
<INCLURE {fond=squelettes_articles/defaut} {id_article}>
<//B_coeur_article>
Ces noisettes ayant des comportements très différents, il est possible de rapidement se retrouver avec plusieurs paramètres différents à ajouter à chaque fois (un pour la pagination, un pour un critére de tri, un pour un filtre par date, …).
Pour être sûr de retrouver le paramètre dont on a besoin, on passe au squelette inclus l’ensemble de #ENV en écrivant
.
Maintenant, si on a besoin d’un paramètre date dans le squelette inclus, on obtiendra sa valeur à l’aide de



Vos commentaires
# Le 18 janvier 2007 à 13:25, par piif
En réponse à : Passer TOUS les paramètres de l’URL à un INCLURE
Merci pour l’idée, c’est pile ce qu’il me fallait :-)
Pour éviter l’usage systématique du filtre env, qui est un peu lourd, on peut définir la fonction suivante (dans mes_fonctions ou un plugin) :
function balise_SETENV($p) {$p->code = "(\$Pile[0]= array_merge(unserialize(\$Pile[0]['env']), \$Pile[0]))&&''";
return $p;
}
Cette fonction copie le contenu de l’argument env dans l’environnement courant.
Donc si le squelette inclu contient au début un #SETENV,
[(#ENV{env}|env{mon_param})]peut être remplacé par#ENV{mon_param}ou même#MON_PARAMs’il n’y a pas de risque de confusion avec une balise de boucle.Attention, pour éviter les strreplace et compagnie, il faut appeler cette version avec
{env=#ENV**}# Le 18 janvier 2007 à 17:17, par Fil
En réponse à : Passer TOUS les paramètres de l’URL à un INCLURE
Le hack est pas mal, mais (pour mémoire) quelqu’un avait eu l’idée de faire un critère d’inclusion spécifique qui fasse ça « proprement ». Seulement j’ai oublié quel nom on voulait lui donner...
Répondre à ce message