mélangeouille de pinceaux

Bonsoir,

soit une boucle type de la forme
<BOUCLE_tableau(ARTICLES){id_rubrique}{par #ENV{tri}}>
.../... les instructions .../...
</BOUCLE_tableau>

Pour tenir compte de la variable "tri" passée en argument lors de l'appel
à la page contenant cette boucle (ce qui permet de donner
un résultat présenté de manière variable) j'avais rédigé
la boucle de la mnière suivante :

<BOUCLE_tableau(ARTICLES){id_rubrique}

<? if(isset($_GET["tri"])){
?>
{par #ENV{tri}}>
<?
}
else{ ?>
{par date}{inverse}>
<?
}
?>
.../... les instructions .../...
</BOUCLE_tableau>

dans cet exemple, si "tri" a reçu une valeur (par exemple "titre")
je me disais qu'on aurait
<BOUCLE_tableau(ARTICLES){id_rubrique}{par titre}>
.../... les instructions .../...
</BOUCLE_tableau>

et si il n'a a pas de valeur affectée (cas du premier appel à la page)
je pensais qu'on aurait :
<BOUCLE_tableau(ARTICLES){id_rubrique}{par titre}>
.../... les instructions .../...
</BOUCLE_tableau>

Mais non, Apache ne me retourne que "erreur dans le squelette" :
il y a donc une erreur de syntaxe que je ne vois pas...
Quelqu'un voit-il où est l'erreur ?
Merci d'avance

Manu Guillemont <manu <at> mine-de-rien.fr> writes:

Bonsoir,

soit une boucle type de la forme
<BOUCLE_tableau(ARTICLES){id_rubrique}{par #ENV{tri}}>
.../... les instructions .../...
</BOUCLE_tableau>

Pour tenir compte de la variable "tri" passée en argument lors de l'appel
à la page contenant cette boucle (ce qui permet de donner
un résultat présenté de manière variable) j'avais rédigé
la boucle de la mnière suivante :

<BOUCLE_tableau(ARTICLES){id_rubrique}

<? if(isset($_GET["tri"])){
?>
{par #ENV{tri}}>
<?
}
else{ ?>
{par date}{inverse}>
<?
}
?>
.../... les instructions .../...
</BOUCLE_tableau>

Tu commet une erreur de comprehension du fonctionnement des squelettes.
Les boucles sont interprettees par le compilateur SPIP pour produire du php,
puis tout le php du squelette (celui venant du compilateur et celui present au
depart dans le squelette) est interpreté.
Dans ton exemple, le compilateur ne voit qu'un infame salmigondi dans la syntaxe
de la boucle, qu'il ne sait en aucun cas interpreter.

Pour faire ce que tu veux faire, il faut ecrire :
{par #ENV{tri,date}}{inverse #ENV{senstri,1}}

Ainsi, si tri n'est pas passé en parametre, #ENV{tri,date} prendra 'date', et de
meme si senstri n'est pas passé en parametre, #ENV{senstri,1} prendra 1, ce qui
inversera le sens du tri.
Tu peux ainsi faire varier la variable de tri et le sens du tri par l'url.

Cedric

Manu Guillemont wrote:

Bonsoir,

soit une boucle type de la forme
<BOUCLE_tableau(ARTICLES){id_rubrique}{par #ENV{tri}}>
.../... les instructions .../...
</BOUCLE_tableau>

Pour tenir compte de la variable "tri" passée en argument lors de l'appel à la page contenant cette boucle (ce qui permet de donner un résultat présenté de manière variable) j'avais rédigé la boucle de la mnière suivante :

<BOUCLE_tableau(ARTICLES){id_rubrique}

<? if(isset($_GET["tri"])){
?>
{par #ENV{tri}}>
<?
}
else{ ?>
{par date}{inverse}>
<?
}
?>
.../... les instructions .../...
</BOUCLE_tableau>

Bon, je crois que celui là, on l'a une fois par jour au moins:
"il ne faut pas mélanger php et boucle" ça marchera pas.

lire par exemple:
www.spip-contrib.net/SPIP-PHP-et-Javascript-sont-dans

ce que tu veux, c'est:
{par #ENV{tri,date}}

ou alors
{par #ENV{tri}} {!par date}
(ça devrait marcher)

Pierre

Manu Guillemont wrote:

Bonsoir,

soit une boucle type de la forme
<BOUCLE_tableau(ARTICLES){id_rubrique}{par #ENV{tri}}>
.../... les instructions .../...
</BOUCLE_tableau>

Pour tenir compte de la variable "tri" passée en argument lors de l'appel à la page contenant cette boucle (ce qui permet de donner un résultat présenté de manière variable) j'avais rédigé la boucle de la mnière suivante :

<BOUCLE_tableau(ARTICLES){id_rubrique}

<? if(isset($_GET["tri"])){
?>
{par #ENV{tri}}>
<?
}
else{ ?>
{par date}{inverse}>
<?
}
?>
.../... les instructions .../...
</BOUCLE_tableau>

lire par exemple:
www.spip-contrib.net/SPIP-PHP-et-Javascript-sont-dans

ce que tu veux, c'est:
{par #ENV{tri,date}}

ou alors
{par #ENV{tri}} {!par date}
(ça devrait marcher)

Pierre

Pour faire ce que tu veux faire, il faut ecrire :
{par #ENV{tri,date}}{inverse #ENV{senstri,1}}

Ainsi, si tri n'est pas passé en parametre, #ENV{tri,date} prendra 'date',
et de meme si senstri n'est pas passé en parametre
#ENV{senstri,1} prendra 1, ce qui
inversera le sens du tri.
Tu peux ainsi faire varier la variable de tri et le sens du tri par l'url.

Merci des réponses....

je ne comprends pas très bien comment fonctionne
{inverse #ENV{senstri,1}}

si senstri n'est pas passé en paramètre, il prend la valeur 1, ça OK !
Mais pourquoi cela inverse-t-il le sens de tri ?
Y'a quelque chose qui m'échappe concernant le critère {inverse} !
Une petite explication SVP ?
Merci d'avance

Merci pour vos réponses... Restait un point que je ne
connaissais pas (critère inverse dynamique)

en fouinant...
http://trac.rezo.net/trac/spip/changeset/6294

m'a donné les éclaircissements...
Bonne fin de soirée

Manu Guillemont <manu <at> mine-de-rien.fr> writes:

>
> Pour faire ce que tu veux faire, il faut ecrire :
> {par #ENV{tri,date}}{inverse #ENV{senstri,1}}
>

je ne comprends pas très bien comment fonctionne
{inverse #ENV{senstri,1}}

Une petite explication SVP ?
Merci d'avance

ah oui, le critere {inverse} a ete etendu.
Si on lui passe une variable en supplement, sur le mode {invere #ENV{truc}} il
inversera effectivement ou non selon que #ÊNV{truc} vaut 0 ou 1
Cedric