At 14:44 +0100 7/12/01, Fil wrote:
@ Choblet Sébastien (devess@mire.net) :
J'essaie d'afficher certains articles à partir de la première date de rédaction et enlever l'article dès que la date de publication est passée. Comment faire?
>
J'ai testé : <? $date_systeme = date('Y', time())."-".date('m', time())."-".date('d', time())." ".date('H',time()).":".date('i', time()).":".date('s', time()); ?>
<BOUCLE_rubrique3(RUBRIQUES){id_rubrique}{date < $date_systeme}{date_redac > $date_systeme}>
> Cette technique ne fonctionne pas.
Je complète l'explication de Fil...
Une des difficultés quand on commence à mélanger les boucles et le PHP, c'est de bien comprendre qu'on ne peut pas utiliser les résultats de fonctions PHP comme critères de boucles. Pour une raison simple: SPIP effectue les boucles, stocke le fichier cache _avec les fonctions PHP en clair, non interprétée_, puis c'est lors de la consultation de ce fichier cache par le visiteur qui provoque l'interprétation des fonctions PHP.
Prenons un exemple plus simple que ta boucle (mais similaire):
<? $larubrique = 23; ?>
<BOUCLE_rubrique(RUBRIQUES){id_rubrique=$id_rubrique}>
(tu peux bien écrire {id_rubrique=<?$id_rubrique?>} ou {id_rubrique=<? echo $id_rubrique; ?>} ça revient au même...)
Ca ne peut pas fonctionner.
Au moment de l'analyse du squelette, SPIP considère les codes PHP comme du texte, rien d'autre. Du coup, {id_rubrique=$id_rubrique} est analysé tel quel, tu essaies de sélectionner une rubrique en fonction d'un _texte_, et non d'une variable.
Le principe est plutôt simple (les boucles sont analysées bien avant que le système commence à s'intéresser au PHP), mais je me suis aussi fait piéger plusieurs fois. J'ai beau savoir que c'est pas possible, c'est tellement simple que je me plante régulièrement :-))
Amicalement,
ARNO*
--
Le Scarabée : http://www.scarabee.com
uZine 2 : http://www.uzine.net
DH/DSS, 0x11930F0B, DEEB 602D B344 644B AF88 BF73 85F4 2297 1193 0F0B