Re: [Spip] Pagination sur plusieurs boucles

44 views
Skip to first unread message

c.dera...@voila.fr

unread,
Feb 2, 2009, 6:25:34 AM2/2/09
to sp...@rezo.net
Merci ! Cela fonctionne en exécutant les 2 premières boucles sans afficher de résultats, et en se servant effectivement de {!doublons} pour afficher l'ensemble via une seule boucle. Mais nouveau problème : si j'ajoute des critères d'affichage dans chacune des 2 premières boucles SITES (par exemple, affichage du plus récent au plus ancien, pour chacune des boucles), dès que je veux afficher l'ensemble avec la 3e boucle, celle-ci ne respecte plus les critères d'affichage imposés dans les 2 premières boucles et m'affiche dans le plus grand désordre des résultats de la boucle 1 et de la boucle 2...


> Message du 02/02/09 à 12h12
> De : "Michel JORDA" <mjo...@mls.nc>
> A : sp...@rezo.net
> Copie à :
> Objet : Re: [Spip] (sans objet)
>
>
> Il faut que tu regardes les doublons. ici par exemple:
> http://www.spip-contrib.net/Le-critere-doublons-sa-mecanique
>
> ca donne à peu près
>
> <BOUCLE1(SITES){id_mot=1}{doublons lessites}>
> ICi les sites avec id_mot1
> </BOUCLE1>
>
> <BOUCLE2(SITES){id_mot=2}{doublons lessites}>
> ICI les sites avec id_mot2
> </BOUCLE2>
>
> puis
>
> <BOUCLE3(SITES){!doublons lessites}>
> ICI les sites qui sont passés soit
> dans la Boucle1, soit dans la Boucle2
> </BOUCLE3>
>
> Bon courage ! Michel
>
>
> Jean-Christophe Sekinger <jc.se...@free.fr> wrote:
>
> > c.dera...@voila.fr a écrit (en cette belle journée du 02/02/2009 11:43)
> > : > Bonjour, j'essaye désespérément de trouver uns solution à un problème
> > qui me semblait simple au départ. Je veux afficher sur une première partie
> > d'une page donnée les sites auxquels est attaché un certain mot-clé "mot1"
> > par exemple, puis dans une second partie de la page, les sites auxquels
> > est attaché le mot-clé "mot 2". Jusqu'ici, aucun souci. > > Mais je veux
> > une pagination sur l'ensemble des résultats affichés (ceux des 2 boucles)
> > de manière à ne pas afficher par exemple plus de 30 résultats dans la
> > page, toutes boucles confondues. Comment faire ?! > > ces histoires de
> > boucles, enfin... avant que des savants motivés se penchent, jupitériens,
> > sur ton problème, il faut que tu donnes un titre clair, explicite, à tes
> > mails! "sans objet" reste généralement "sans réponse"
>
> _______________________________________________
> liste spip
> sp...@rezo.net - désabonnement : spip...@rezo.net
>
> Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
>
> Documentation de SPIP : http://www.spip.net/
>
> irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip
>
>

____________________________________________________

Écoutez en un clic votre musique préférée et découvrez de nouveaux titres en affinité avec vos goûts sur http://musiline.voila.fr


_______________________________________________
liste spip
sp...@rezo.net - désabonnement : spip...@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

Michel JORDA

unread,
Feb 2, 2009, 7:25:44 AM2/2/09
to sp...@rezo.net
Normal.
tu ne peux gérer l'ordre que dans la 2eme boucle, l'ordre des 2
premières boucles n'est pas conservé dans doublons ....
tu veux quoi comme ordre ? le plus simple est

<BOUCLE3(SITES){!doublons lessites}{par age}>

ICI les sites qui sont passés soit
dans la Boucle1, soit dans la Boucle2
</BOUCLE3>

c.dera...@voila.fr

unread,
Feb 2, 2009, 8:08:43 AM2/2/09
to sp...@rezo.net
Aïe... en fait, je souhaitais afficher les résultats de la BOUCLE1 avec les critères {par date} {inverse}, puis ceux de la BOUCLE2 avec le critère {par hasard}, le tout grâce à la BOUCLE3, mais en respectant critères précédents et l'ordre. Aucun moyen en ne passant pas par les doublons alors ? Moi qui croyais que tout trouvait une solution en SPIP ! ;)


> Message du 02/02/09 à 13h26


> De : "Michel JORDA" <mjo...@mls.nc>
> A : sp...@rezo.net
> Copie à :

> Objet : Re: [Spip] Pagination sur plusieurs boucles

Jean-Christophe Villeneuve

unread,
Feb 2, 2009, 11:35:51 AM2/2/09
to c.dera...@voila.fr, sp...@rezo.net
c.dera...@voila.fr a écrit :

> Aïe... en fait, je souhaitais afficher les résultats de la BOUCLE1 avec les critères {par date} {inverse}, puis ceux de la BOUCLE2 avec le critère {par hasard}, le tout grâce à la BOUCLE3, mais en respectant critères précédents et l'ordre. Aucun moyen en ne passant pas par les doublons alors ? Moi qui croyais que tout trouvait une solution en SPIP ! ;)
>
>
>

rien ne t'empeche de faire par exemple, en passant par les doublons

boucle 1 qui va chercher les 15 plus récents avec {par date}
{inverse}{0.15)
boucle 2 qui va en chercher 15au hasard avec {par hasard}{0.15)
puis
boucle 3 qui affiche le tout des plus récents aux plus anciens avec {par
date} {inverse}

c.dera...@voila.fr

unread,
Feb 2, 2009, 1:15:02 PM2/2/09
to sp...@rezo.net
Oui, je pourrais faire ceci, mais c'ets là mon problème : je souhaiterais que les 15 plus récents s'affichent, SUIVIS des 15 au hasard. Je ne veux pas qu'il affiche l'ensemble des 30 du plus récent au plus ancien, mais les 30 dans l'ordre où il les a trouvés. Est-ce possible ou dois-je renoncer ?


> Message du 02/02/09 à 17h35
> De : "Jean-Christophe Villeneuve" <jcvill...@cegetel.net>
> A : c.dera...@voila.fr
> Copie à : sp...@rezo.net


> Objet : Re: [Spip] Pagination sur plusieurs boucles
>
>

> c.dera...@voila.fr a écrit :
> > Aïe... en fait, je souhaitais afficher les résultats de la BOUCLE1 avec les critères {par date} {inverse}, puis ceux de la BOUCLE2 avec le critère {par hasard}, le tout grâce à la BOUCLE3, mais en respectant critères précédents et l'ordre. Aucun moyen en ne passant pas par les doublons alors ? Moi qui croyais que tout trouvait une solution en SPIP ! ;)
> >
> >
> >
>
> rien ne t'empeche de faire par exemple, en passant par les doublons
>
> boucle 1 qui va chercher les 15 plus récents avec {par date}
> {inverse}{0.15)
> boucle 2 qui va en chercher 15au hasard avec {par hasard}{0.15)
> puis
> boucle 3 qui affiche le tout des plus récents aux plus anciens avec {par
> date} {inverse}
>
>

____________________________________________________

Ecoutez le dernier single de U2 "Get on your boots" sur http://musiline.voila.fr !

Stephane

unread,
Feb 2, 2009, 1:27:20 PM2/2/09
to c.dera...@voila.fr, sp...@rezo.net
c.dera...@voila.fr a écrit :

> Oui, je pourrais faire ceci, mais c'ets là mon problème : je souhaiterais que les 15 plus récents s'affichent, SUIVIS des 15 au hasard. Je ne veux pas qu'il affiche l'ensemble des 30 du plus récent au plus ancien, mais les 30 dans l'ordre où il les a trouvés. Est-ce possible ou dois-je renoncer ?
>

ben dans ce cas tu affiches directement avec les 2 premieres boucles (et
du coup pas de 3eme boucle avec !doublons) ou est le probleme ?

c.dera...@voila.fr

unread,
Feb 2, 2009, 1:44:39 PM2/2/09
to sp...@rezo.net

Arrrgggh ! Oui Stéphane, je n'ai jamais voulu utiliser de doublons, mais dans ce cas il faut plusieurs boucles effectivement, et qui dit plusieurs boucles dit pagination impossible sur l'ensemble des 2 (ou plus) boucles ! D'où retour à la case départ :( Je désespère...

> Message du 02/02/09 à 19h27
> De : "Stephane" <step...@rezo.net>

> Objet : Re: Pagination sur plusieurs boucles


>
>
> c.dera...@voila.fr a écrit :
> > Oui, je pourrais faire ceci, mais c'ets là mon problème : je souhaiterais que les 15 plus récents s'affichent, SUIVIS des 15 au hasard. Je ne veux pas qu'il affiche l'ensemble des 30 du plus récent au plus ancien, mais les 30 dans l'ordre où il les a trouvés. Est-ce possible ou dois-je renoncer ?
> >
>
> ben dans ce cas tu affiches directement avec les 2 premieres boucles (et
> du coup pas de 3eme boucle avec !doublons) ou est le probleme ?
>
>

____________________________________________________

Ecoutez le dernier single de U2 "Get on your boots" sur http://musiline.voila.fr !

Jean-Christophe Villeneuve

unread,
Feb 2, 2009, 2:36:54 PM2/2/09
to c.dera...@voila.fr, sp...@rezo.net
c.dera...@voila.fr a écrit :

> Oui, je pourrais faire ceci, mais c'ets là mon problème : je souhaiterais que les 15 plus récents s'affichent, SUIVIS des 15 au hasard. Je ne veux pas qu'il affiche l'ensemble des 30 du plus récent au plus ancien, mais les 30 dans l'ordre où il les a trouvés. Est-ce possible ou dois-je renoncer ?
>
Ben alors affiche tes articles dans les 2 premières boucles et vire la 3e !
Ou alors j'ai pas compris ?
Sinon, c'est contradictoire, ce que tu veux.
Ou alors si tu veux les 15 plus récents des 2 premières boucles puis 15
au hasard venant des 2 premières boucles, tu fais
Boucle 1 qui va chercher tous les articles avec mot-clé 1 stocké dans
doublons_un ET dans doublons_deux
Boucle 2 qui va chercher tous les articles avec mot-clé 2 stocké dans
doublons_un ET dans doublons_deux
Boucle 3 qui affiche les 15 + récents pris dans doublons_un avec {doublons}
Boucle 4 qui affiche 15 articles au hasard pris dans doublons_deux avec
{doublons} pour pas réafficher les mêmes
ça doit fonctionner ça si j'ai bien pigé ton souhait.

>
>
>> Message du 02/02/09 à 17h35
>> De : "Jean-Christophe Villeneuve" <jcvill...@cegetel.net>
>> A : c.dera...@voila.fr
>> Copie à : sp...@rezo.net
>> Objet : Re: [Spip] Pagination sur plusieurs boucles
>>
>>
>> c.dera...@voila.fr a écrit :
>>
>>> Aïe... en fait, je souhaitais afficher les résultats de la BOUCLE1 avec les critères {par date} {inverse}, puis ceux de la BOUCLE2 avec le critère {par hasard}, le tout grâce à la BOUCLE3, mais en respectant critères précédents et l'ordre. Aucun moyen en ne passant pas par les doublons alors ? Moi qui croyais que tout trouvait une solution en SPIP ! ;)
>>>
>>>
>>>
>>>
>> rien ne t'empeche de faire par exemple, en passant par les doublons
>>
>> boucle 1 qui va chercher les 15 plus récents avec {par date}
>> {inverse}{0.15)
>> boucle 2 qui va en chercher 15au hasard avec {par hasard}{0.15)
>> puis
>> boucle 3 qui affiche le tout des plus récents aux plus anciens avec {par
>> date} {inverse}
>>
>>

_______________________________________________

c.dera...@voila.fr

unread,
Feb 3, 2009, 7:30:50 AM2/3/09
to sp...@rezo.net

Non, ça ne résoud pas mon souci. En fait, je n'ai aucun souci d'affichage des résultats. C'est simplement pour la pagination.
Pour afficher mes résultats de la façon dont je souhaite les afficher, il me faut 2 boucles. Or la pagination ne peut se faire que sur une boucle et non sur l'ensemble des 2. La solution d'afficher les résultats en passant par {doublons xxx} permet de "stocker" dans un premier temps les résultats puis de les afficher via une seule boucle à la fin, ce qui permet du coup de mettre en place la pagination. Mais en optant pour cette solution, il se trouve que les résultats ne sont plus affichés dans l'ordre imposé par les deux premières boucles...

Donc je tourne en rond ! Soit j'affiche correctement les résultats mais sans pouvoir mettre en oeuvre la pagination. Soit j'affiche les résultats dans un ordre qui ne me convient pas et avec la pagination. Personne n'aurait d'idée pour une chose qui paraît pourtant toute bête ?

> Message du 02/02/09 à 20h37

____________________________________________________

Ecoutez le dernier single de U2 "Get on your boots" sur http://musiline.voila.fr !

Michel JORDA

unread,
Feb 3, 2009, 8:20:38 PM2/3/09
to sp...@rezo.net
Bon, il ne reste plus que les tableaux de spip-bonux alors.
Boucle1 range les articles dans un tableau
Boucle2 idem
Boucle3 affiche le tableau.
Va voir spipbonux sur spip-contrib.
ca donnerait qq chose comme
<BOUCLE1(SITES){id_mot=1}{par age}{0,15}>
#SET_PUSH{tabsites,#ID_ARTICLE}
</BOUCLE1>
<BOUCLE2(SITES){id_mot=2}{par hasard}>
#SET_PUSH{tabsites,#ID_ARTICLE}
</BOUCLE2>

puis

<BOUCLE3(POUR){tableau #ENV{tabsites}} {pagination}>
ICI les sites qui sont pass és soit


dans la Boucle1, soit dans la Boucle2

dans l'ordre où ils ont été pushés...

<BOUCLE0(ARTICLES){id_article=#VALEUR}>
</BOUCLE0>
</BOUCLE3>


ATTENTION, non testé.
Cordialement
MJ

Stephane

unread,
Feb 4, 2009, 7:03:37 AM2/4/09
to sp...@rezo.net
Michel JORDA a écrit :

> Bon, il ne reste plus que les tableaux de spip-bonux alors.

malheureusement le probleme ne changera pas, le seul moyen fiable de
faire une pagination avec un critère hasard, c'est de tout remonter et
de faire une pagination javascript.

sinon, entre 2 pages, le tirage au hasard risque d'etre fait (ca depend
du cache)

lire le thread
http://archives.rezo.net/spip.mbox/200801.mbox/%3C478F809...@advisio-com.fr%3E

@++

Michel Jorda

unread,
Feb 4, 2009, 4:29:48 PM2/4/09
to Stephane, sp...@rezo.net
Je pense que tu te trompes....
avec les tableaux, selon les boucles que j'ai postées la dernière
fois, les ID-ARTICLES sont poussés dans l'ordre de la boucle, et tu
affiches ensuite dans ta boucle de pagination, les articles dans
l'ordre du tableau.
Aucune raison donc que ça se mélange encore ? D'autant que les 3
boucles étant dans la même page, elles vont etre calculées dans la
même passe.
As-tu essayé ? (je suis en formation SPIP justement, donc pas trop le
temps).
Cordialement

Le 4 févr. 09 à 23:03, Stephane a écrit :

Stephane

unread,
Feb 4, 2009, 5:03:53 PM2/4/09
to Michel Jorda, sp...@rezo.net
Michel Jorda a écrit :

> Je pense que tu te trompes....
> avec les tableaux, selon les boucles que j'ai postées la dernière
> fois, les ID-ARTICLES sont poussés dans l'ordre de la boucle, et tu
> affiches ensuite dans ta boucle de pagination, les articles dans
> l'ordre du tableau.
> Aucune raison donc que ça se mélange encore ? D'autant que les 3
> boucles étant dans la même page, elles vont etre calculées dans la
> même passe.
> As-tu essayé ? (je suis en formation SPIP justement, donc pas trop le
> temps).

non, pas besoin, il suffit de reflechir à comment marche spip.
lorsque tu vas appeler la page 2, le cache va etre recalculé (contexte
different) et donc l'ordre de ta deuxieme boucle va changer (tu auras
bien la page 2, mais d'une autre liste).

Reply all
Reply to author
Forward
0 new messages