Passer des variables php en parametre de criteres de boucles?

Bonjour tout le monde,
Dites pourquoi est ce qu'on ne peut pas passer des variables php en
parametres des critères des boucles? Peut etre fais-je une bévue, voici le
type de truc que j'aimerais pouvoir faire:

<BOUCLE_recupLesParents(RUBRIQUES){id_secteur=$leSecteur}>
    print("<BR>Les rub du secteur $leSecteur c'est #ID_RUBRIQUE");
</BOUCLE_recupLesParents>

La boucle ci dessus en elle meme n'est pas importante, c'est vraiment
l'histoire des variable en parametres de criteres de boucles Spip qui
m'interesse. En fait je voudrais notamment pouvoir recuperer un tabvleau de
tout les ancetres d'une rubrique. Par exemple avec cette arbrescence:

Rub1
--Rub2
----Rub3
-------Rub4
--Rub5
----Rub6
----Rub7
-------Rub8
Rub9
--Rub10
-----Rub11
-----Rub12
--------Rub13

le tableau de Rub8 serait: [Rub8 Rub7 Rub5 Rub1]

....

Tout ca pour faire un menu rubriques ou l'arborescence est développée pour
la rubrique en cours et pas les autres:
Ainsi pour mon exemple précédent si la rubrique 7 est sélectionnée ca donne:

Rub1
--Rub2
--Rub5
----Rub6
----Rub7
-------Rub8
Rub9

Pour l'instant je fais ca mais pour des arborescences ne dépassant pas 2
niveaux (rubrique-sous rubrique)

Voila c'est tout, si quelq'un a des idées!
Guillaume

Depuis l'installation de la version 1.3 , les liens figurant dans les
messages d'alerte email ne fonctionnent plus.

Ils sont du type :

http://webgeneraction.multimania.com/webgeneraction/article.php3
?id_article=102

au lieu de :

http://webgeneraction.multimania.com/article.php3 ?id_article=102

Pour qu'ils refonctionnent il convient de modifier l'url du site dans
"configurer"...

Il faut indiquer maintenant :

http://www.multimania.com/webgeneraction/

au lieu de :

http://webgeneraction.multimania.com/

dommage...

enfin... çà marche de nouveau.

Walk

Euh je croiss avoir résolu mon histoire de menu "arboricole"et de tableau
des parents par contre ma question sur le passage de variable en parametres
de criteres de boucle SPIP reste posée

Guillaume
----- Message d'origine -----
De : "Guillaume JAN" <gj@oggam.org>
À : <spip@rezo.net>
Envoyé : mercredi 6 février 2002 11:51
Objet : [Spip] Passer des variables php en parametre de criteres de boucles?

Bonjour tout le monde,
Dites pourquoi est ce qu'on ne peut pas passer des variables php en
parametres des critères des boucles? Peut etre fais-je une bévue, voici le
type de truc que j'aimerais pouvoir faire:

<BOUCLE_recupLesParents(RUBRIQUES){id_secteur=$leSecteur}>
    print("<BR>Les rub du secteur $leSecteur c'est #ID_RUBRIQUE");
</BOUCLE_recupLesParents>

La boucle ci dessus en elle meme n'est pas importante, c'est vraiment
l'histoire des variable en parametres de criteres de boucles Spip qui
m'interesse. En fait je voudrais notamment pouvoir recuperer un tabvleau

de

tout les ancetres d'une rubrique. Par exemple avec cette arbrescence:

Rub1
--Rub2
----Rub3
-------Rub4
--Rub5
----Rub6
----Rub7
-------Rub8
Rub9
--Rub10
-----Rub11
-----Rub12
--------Rub13

le tableau de Rub8 serait: [Rub8 Rub7 Rub5 Rub1]

....

Tout ca pour faire un menu rubriques ou l'arborescence est développée pour
la rubrique en cours et pas les autres:
Ainsi pour mon exemple précédent si la rubrique 7 est sélectionnée ca

donne:

Rub1
--Rub2
--Rub5
----Rub6
----Rub7
-------Rub8
Rub9

Pour l'instant je fais ca mais pour des arborescences ne dépassant pas 2
niveaux (rubrique-sous rubrique)

Voila c'est tout, si quelq'un a des idées!
Guillaume

_______________________________________________
spip mailing list
spip@rezo.net
http://listes.rezo.net/mailman/listinfo/spip

@ Guillaume JAN <gj@oggam.org> :

Euh je croiss avoir résolu mon histoire de menu "arboricole"et de tableau
des parents

Il faut regarder du côté de la boucle hierarchie

par contre ma question sur le passage de variable en parametres
de criteres de boucle SPIP reste posée

Il y a plusieurs mécanismes possibles.

1) passer des variables aux critères des boucles : c'est possible avec des
variables du type debut_xxx (par exemple {debut_forum,10} afficherait les 10
éléments de forum à partir du debut_forum indiqué dans l'URL, cf. les
squelettes articles d'uZine.

2) passer une variable à une page, variable qui sera relue en php à
l'intérieur de la page (et qui donc ne s'intéresse pas aux données de la
base) : c'est le cas le plus simple, une variable $toto='a', et un squelette
contenant <? echo $toto ?> affichera 'a'. La ligne <? echo $toto ?> est
présente telle quelle dans le fichier cache, et est interprétée à chaque
chargement.

3) dans le cas qui précède, le cache doit être lui-même calculé pour chaque
$toto différent car l'URL de la page varie en fonction de toto... On a donc
prévu, pour la version prochaine, un mécanisme permettant de passer une
variable sans recalculer la page : il suffira tout simplement d'utiliser une
variable dénommée var_xxx.

Tout ça est compliqué à expliquer, mais avec des exemples c'est très clair.
Il ne faut surtout pas hésiter à aller visionner les fichiers dans le CACHE/
pour comprendre comment ça marche, en sachant que ces fichiers sont
"exécutés" par un include, au moment de l'affichage.

-- Fil

Honte sur moi qui utilise Spip depuis 2 mois et qui n'avait pas encore
utilisé la boucle Hierarchie... Désolé!

Merci pour ces infos capitales pour moi!

Guillaume

----- Message d'origine -----
De : "Fil" <fil@rezo.net>
À : <spip@rezo.net>
Envoyé : mercredi 6 février 2002 12:13
Objet : Re: [Spip] Passer des variables php en parametre de criteres
deboucles?

@ Guillaume JAN <gj@oggam.org> :
> Euh je croiss avoir résolu mon histoire de menu "arboricole"et de

tableau

> des parents

Il faut regarder du côté de la boucle hierarchie

> par contre ma question sur le passage de variable en parametres
> de criteres de boucle SPIP reste posée

Il y a plusieurs mécanismes possibles.

1) passer des variables aux critères des boucles : c'est possible avec des
variables du type debut_xxx (par exemple {debut_forum,10} afficherait les

10

éléments de forum à partir du debut_forum indiqué dans l'URL, cf. les
squelettes articles d'uZine.

2) passer une variable à une page, variable qui sera relue en php à
l'intérieur de la page (et qui donc ne s'intéresse pas aux données de la
base) : c'est le cas le plus simple, une variable $toto='a', et un

squelette

contenant <? echo $toto ?> affichera 'a'. La ligne <? echo $toto ?> est
présente telle quelle dans le fichier cache, et est interprétée à chaque
chargement.

3) dans le cas qui précède, le cache doit être lui-même calculé pour

chaque

$toto différent car l'URL de la page varie en fonction de toto... On a

donc

prévu, pour la version prochaine, un mécanisme permettant de passer une
variable sans recalculer la page : il suffira tout simplement d'utiliser

une

variable dénommée var_xxx.

Tout ça est compliqué à expliquer, mais avec des exemples c'est très

clair.

Il ne faut surtout pas hésiter à aller visionner les fichiers dans le

CACHE/

pour comprendre comment ça marche, en sachant que ces fichiers sont
"exécutés" par un include, au moment de l'affichage.

-- Fil

_______________________________________________
spip mailing list
spip@rezo.net
http://listes.rezo.net/mailman/listinfo/spip

At 11:51 +0100 6/02/02, Guillaume JAN wrote:

Bonjour tout le monde,
Dites pourquoi est ce qu'on ne peut pas passer des variables php en
parametres des critères des boucles? Peut etre fais-je une bévue, voici le
type de truc que j'aimerais pouvoir faire:

<BOUCLE_recupLesParents(RUBRIQUES){id_secteur=$leSecteur}>
    print("<BR>Les rub du secteur $leSecteur c'est #ID_RUBRIQUE");
</BOUCLE_recupLesParents>

Salut,

Bon, y'a la réponse de Fil, mais je complète...

Vu ton code, à priori c'est impossible, sauf énormes manipulations. C'est une erreur que je commets régulièrement, parce que ça semble une solution facile: bidouiller une variable dans le squelette, et tenter de la faire passer comme critère directement dans une boucle.

Or de cette façon, ça n'est pas possible: lorsqu'il analyse les boucles, SPIP ne travaille pas sur le code PHP, mais sur du texte brut (c'est une analyse de texte); s'il y a du PHP dans le squelette, SPIP s'en fiche, et le sauvegarde tel quel dans le fichier cache. C'est seulement au moment de l'affichage de la page que PHP est interprété, donc tout à la fin, donc longtemps après l'analyse des boucles. Bref: comme PHP est analysé _après_ les boucles, il est impossible de balancer du PHP comme critère des boucles.

Sauf exceptions prévues (et rares, telles que debut_forum), indiquées par Fil.

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

Ok, donc on ne peut pas faire des "générateurs de boucle SPIP" du genre:

<?
$cpt=1;
while(critere quelconque)
{
<BOUCLE_numero$cpt(RUBRIQUE){...}>
$cpt++;
}
for ($i=cpt-1;$i>0;$i--)
{
</BOUCLE_numero$i>
}
?>

Ce qui aurait été hyper pratique! Mais bon on ne peut pas tout avoir! Avec
ma petite connaissance du fonctionnement de Spip que je commence a avoir, je
ne pensequ'il soit possible de faire ca un jour a moins de définir un
marqueur de "super code php" qui prenne le dessus sur le code SPIP....
Mouaiffff!!!!!

----- Message d'origine -----
De : "ARNO*" <arno@scarabee.com>
À : "Guillaume JAN" <gj@oggam.org>; <spip@rezo.net>
Envoyé : mercredi 6 février 2002 13:22
Objet : Re: [Spip] Passer des variables php en parametre de criteres de
boucles?

At 11:51 +0100 6/02/02, Guillaume JAN wrote:
>Bonjour tout le monde,
>Dites pourquoi est ce qu'on ne peut pas passer des variables php en
>parametres des critères des boucles? Peut etre fais-je une bévue, voici

le

>type de truc que j'aimerais pouvoir faire:
>
>
><BOUCLE_recupLesParents(RUBRIQUES){id_secteur=$leSecteur}>
> print("<BR>Les rub du secteur $leSecteur c'est #ID_RUBRIQUE");
></BOUCLE_recupLesParents>

Salut,

Bon, y'a la réponse de Fil, mais je complète...

Vu ton code, à priori c'est impossible, sauf énormes manipulations.
C'est une erreur que je commets régulièrement, parce que ça semble
une solution facile: bidouiller une variable dans le squelette, et
tenter de la faire passer comme critère directement dans une boucle.

Or de cette façon, ça n'est pas possible: lorsqu'il analyse les
boucles, SPIP ne travaille pas sur le code PHP, mais sur du texte
brut (c'est une analyse de texte); s'il y a du PHP dans le squelette,
SPIP s'en fiche, et le sauvegarde tel quel dans le fichier cache.
C'est seulement au moment de l'affichage de la page que PHP est
interprété, donc tout à la fin, donc longtemps après l'analyse des
boucles. Bref: comme PHP est analysé _après_ les boucles, il est
impossible de balancer du PHP comme critère des boucles.

Sauf exceptions prévues (et rares, telles que debut_forum), indiquées par

Fil.

ARNO*

Rectification, ça ne marche toujours pas
(les liens figurant dans les messages d'alerte email ne fonctionnent
pas)

Ca a marché juste après ma modif, mais peu après: fini

Walk
http://tipiwiki.free.fr/

----- Message d'origine -----
De : "Walk" <walk@altern.org>
À : <spip@rezo.net>
Envoyé : mercredi 6 février 2002 12:02
Objet : [Spip] 1.3 Erreur URL messages forum Multimania

| Depuis l'installation de la version 1.3 , les liens figurant dans
les
| messages d'alerte email ne fonctionnent plus.
|
| Ils sont du type :
|
| http://webgeneraction.multimania.com/webgeneraction/article.php3
| ?id_article=102
|
| au lieu de :
|
| http://webgeneraction.multimania.com/article.php3 ?id_article=102