Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2015-06-03 20:57:48

Welsh
Membre
Inscription : 2011-12-28

Problème de boucle sur des billets

Bonsoir

Je souhaite afficher mes billets en 3 parties :
- les billets sélectionnés
- les 6 derniers billets non sélectionnés
- enfin 12 billets pris aléatoirement dans le reste.

Ce que j'ai fait :
- billets sélectionnés : tpl:Entries avec selected="1" -> ok
- 6 derniers billets non sélectionnés : tpl:Entries selected="0" lastn="6" -> ok
- 12 billets pris aléatoirement dans le reste : c'est là que cela se corse.

J'ai implémenté un sortby="shuffle" suite à un fil de discussion trouvé sur le forum (de mémoire merci osku) :

# tri aleatoire des billets
$core->addBehavior('templateCustomSortByAlias',array('behaviorsShuffle','templateCustomSortByAlias'));
class behaviorsShuffle 
{	
	public static function templateCustomSortByAlias($alias)
	{
		if (DC_DBDRIVER == 'pgsql' ) {
			$alias['post']['shuffle'] = 'RANDOM()';
		} elseif (DC_DBDRIVER == 'mysql') {
			$alias['post']['shuffle'] = 'RAND()';
		}
	}
} 

Donc il me faudrait une boucle du genre :

<tpl:Entries selected="0" sortby="shuffle">
     <tpl:LoopPosition start=xx length="12">
         .....
     </tpl:LoopPosition>
</tpl:Entries>

Je ne sais pas comment indique que je ne veux pas prendre les 6 premiers de la boucle tpl:Entries...
Car sortby="shuffle" ne fonctionne pas sur tpl:LoopPosition. Du moins de ce que je comprends.

Quelqu'un a t'il une idée ?

Merci

Welsh

Dernière modification par Welsh (2015-06-03 21:00:08)

Hors ligne

#2 2015-06-07 20:58:13

Welsh
Membre
Inscription : 2011-12-28

Re : Problème de boucle sur des billets

Bonsoir

Personne n'a d'idée (D-Day pour hier ;-) ) ?

Hors ligne

#3 2015-06-08 06:08:56

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Problème de boucle sur des billets

En fait ce que tu cherches à faire est un peu étrange. En fait tu veux des billets au hasard mais sans les 6 premiers. Cela ne semble pas compliqué dit comme ça mais la requête sql est un peu plus complexe.
Le problème n'est pas lié à LoopPosition. Cela fonctionnerait mais tpl:Entries va te ramener des billets au hasard effectivement et LoopPosition va te permettre de ne prendre qu'à partir du 7ème mais les 6 non affichés ne seront pas les mêmes que dans la boucle précédente.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#4 2015-06-08 09:28:08

Welsh
Membre
Inscription : 2011-12-28

Re : Problème de boucle sur des billets

C'est exactement cela.
Cela peut sembler étrange effectivement.
À travers Dotclear, je présente les documents et des informations sur la généalogie (http://histoire.gallois.info).
L'idée est donc la suivante :
- mettre en billets sélectionnés des choses surprnantes
- mettre les 6 derniers billets (donc l'évolution récente)
- proposer au hasard car la documentation est un peu toujours la même : actes d'état-civil, photos, contrats de mariages.

Sur le plan technique, je pense plutôt que je vais devoir coder un peu...
Je pense que plutôt que jouer sur la requête SQL, je pourrais étendre Entries (au sens objet) pour une fois billets revenus (donc trier par date décroissante) stocker dans un tableau les x derniers billets, puis faire de l'aléatoire sur le reste. Le problème c'est que cet aléa portera sur le restant des billets ramenés dans la limite de tpl:Entries....

Bon, j'en conclus qu'il n'y a pas desolution avec les tags existants et qu'en faire un ne va pas être simple.
La solution semblant coûteuse, je vais réexaminer le besoin.

Merci nikrou

Hors ligne

#5 2015-06-09 06:13:12

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Problème de boucle sur des billets

Et en jouant sur les catégories ou sur la date ?
Ce n'est pas forcément très compliqué d'étendre tpl:Entries


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#6 2015-06-09 12:22:59

Welsh
Membre
Inscription : 2011-12-28

Re : Problème de boucle sur des billets

Jouer sur la date implique de repérer la date des 6 plus récents. Ou mettre une limite arbitraire. Why not ?

Jouer sur les catégories me plait moyennement. J'utilise les catégories pour présenter déjà les documents. En outre, j'ai détourné le plugin Series pour accéder aux informations par individu j'utilises les tags également (principalement pour les noms de familles).

J'y ai réfléchi entretemps et je vois quatre solutions :
- ne pas mettre d'aléa
- jouer sur la date avec un délai suffisamment grand pour que j'estime qu'il y aura au moins 6 billets
- mettre les mains dans le cambouis et étendre Entries (pour ma curiosité, tu ferais un autre plugin ?)
- laisser comme c'est : 6 derniers + aléatoire sur l'ensemble en se disant qu'avec la loi des grands nombres, la probabilité qu'un des 6 derniers billets sorte diminue lorsque le nombre de billets augmente.

Hors ligne

#7 2015-06-11 06:13:00

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Problème de boucle sur des billets

Welsh a écrit :

Jouer sur la date implique de repérer la date des 6 plus récents. Ou mettre une limite arbitraire. Why not ?

Jouer sur les catégories me plait moyennement. J'utilise les catégories pour présenter déjà les documents. En outre, j'ai détourné le plugin Series pour accéder aux informations par individu j'utilises les tags également (principalement pour les noms de familles).

cela donne déjà une bonne base de tri.

Welsh a écrit :

J'y ai réfléchi entretemps et je vois quatre solutions :
- ne pas mettre d'aléa

Je n'en mettrais pas non plus. Personnellement je n'aime pas trop les pages qui changent sur un critère étrange.

Welsh a écrit :

- mettre les mains dans le cambouis et étendre Entries (pour ma curiosité, tu ferais un autre plugin ?)

Oui un plugin ou simplement à partir du fichier _public de ton thème.
Si tu veux de l'aide n'hésite pas.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#8 2015-06-11 06:30:05

Welsh
Membre
Inscription : 2011-12-28

Re : Problème de boucle sur des billets

Merci de ton retour.
Je pense que sur le codage je devrais m'en débrouiller. J'ai mis les mains dans Series pour l'adapter un peu.
Maintenant, plus qu'à trouver un peu de temps...

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map