Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Pages : 1
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
Bonsoir
Personne n'a d'idée (D-Day pour hier ;-) ) ?
Hors ligne
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
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
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
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
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.
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.
- 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
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
Pages : 1
Vous n'êtes pas identifié(e).