Alexis Poncet a écrit :
Je vais chercher mais c'est pas assez limpide pour moi...
rubrique.html :
#SET{toto}, #INCLURE{fond=header, referant=rub, id_rubrique}}
<INCLURE{fond=menu, toto=#GET{toto}}>
déjà, là, j'ai fait une faute. c'est :
#SET{toto, #INCLURE{fond=header, referant=rub, id_rubrique}}
<INCLURE{fond=menu, toto=#GET{toto}}>
depuis mon squelette rubrique.html, j'inclus header.html
en lui passant en paramètre l'id de la rubrique (ça pourrait servir)
et une variable 'referant' de valeur 'rub' pour lui indiquer
(à header.html) d'où il est appelé (l'origine de l'INCLURE).
ensuite j'inclus menu.html à qui je passe en paramètre
une variable 'toto' dont la valeur est ce que m'a retourné
header.html (voir ce qui suit)
header.html :
<BOUCLE_x(TABLE){critères...}>
#SET{toto, #CHAMP}
</BOUCLE_x>
dans mon squelette header.html, je fais ma petite tambouille
avec mes boucles etc.
ici, la boucle _x renseigne une variable 'toto' avec comme valeur
celle du champ #CHAMP.
bien sûr, dans cet exemple, la variable 'toto' voit sa valeur
modifiée à chaque 'tour de boucle'. donc seule la valeur du
dernier enregistrement retourné par la boucle sera affectée
à 'toto'.
si on voulait récupérer tous les enregistrements retournés il
faudrait utiliser un tableau. de la forme :
#SET{toto, #ARRAY{}}
<BOUCLE_x(TABLE){critères...}>
[(#SET{toto, #GET{toto}|push{#CHAMP}})]
</BOUCLE_x>
à noter que cette boucle ne produit aucun affichage (aucune sortie html)
[(#ENV{referant}|=={rub}|oui)#GET{toto}]
ici, toujours dans header.html donc, je teste d'où
vient l'appel.
si header.html a été appelé depuis la page rubrique.html,
ce que je sais grâce au paramètre passé à l'INCLURE (voir
plus haut), alors je retourne ma variable 'toto' précédemment
renseignée.
s'il s'agit d'un tableau ce sera :
[(#ENV{referant}|=={rub}|oui)[(#GET{toto}|serialize)]]
menu.html :
#ENV{toto}
le deuxième INCLURE depuis rubrique.html, appelé après
celui de header.html donc, profite du retour de ce dernier (qui
arrive dans rubrique.html grâce à #GET{toto} et lui est passé
par toto=#GET{toto}).
je récupère donc 'toto' (sa valeur) dans menu.html
si toto est un tableau à l'origine (voir header.html), je peux
l'utiliser avec :
[(#ENV**{toto}|unserialize)]
l'exemple complet :
créer 3 fichiers xrubrique.html, xheader.html et xmenu.html
et les placer dans squelettes/
à tester en appelant : ?page=xrubrique
-----xrubrique.html----------
#CACHE{0}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-language" content="fr">
<title>- -test- -</title>
</head>
<body>
#SET{toto, #INCLURE{fond=xheader, referant=rub}}
<INCLURE{fond=xmenu, toto=#GET{toto}}>
[(#REM) ce deuxième inclure de xheader ne retournera rien car ici
xheader ne reçoit pas referant=rub ]
<INCLURE{fond=xheader}>
</body>
</html>
-----xheader.html----------
#CACHE{0}
#SET{toto, #ARRAY{}}
<BOUCLE_x(ARTICLES){id_article==^(1|3)}>
[(#SET{toto, #GET{toto}|push{#ID_ARTICLE}})]
</BOUCLE_x>
[(#ENV{referant}|=={rub}|oui)[(#GET{toto}|serialize)]]
-----xmenu.html----------
#CACHE{0}
<BOUCLE_z(ARTICLES) {id_article IN #ENV**{toto}|unserialize} {"<br />"}>
#TITRE
</BOUCLE_z>
je suis pas persuadé d'avoir été trés clair...