Ernestine Posté 8 Février 2005 Partager Posté 8 Février 2005 (modifié) Bonsoir, Sur un site en Spip dont je m'occupe, je souhaite afficher la position d'un article dans sa rubrique. S'il n'y avait qu'une seule rubrique, sa position serait bien évidemment le numéro de cet article. Mais puisqu'il y a plusieurs rubriques contenant chacune plusieurs articles, ce n'est pas le cas. La seule solution que j'ai trouvée est assez mauvaise : <!-- affichge du numéro --> <?php $compteur=1; ?> <BOUCLE_avant(ARTICLES){id_rubrique}{age_relatif > 0}> <?php $compteur++; ?> </BOUCLE_avant> <?php echo ("n° " . $compteur ); ?> Non seulement on utilise le php, ce qui est déjà un point négatif. Mais surtout, ceci fait tourner une boucle "à vide", et Spip, à chaque tour de boucle, génère une ligne blanche dans le code. Tant qu'il y a peu d'articles, ce n'est pas trop gênant. Mais si un jour il y en a des centaines, on se retrouvera avec des codes sources immenses, vides à 90%, et surtout très longs à charger ! Avez-vous une solution pour résoudre ce problème ? N'est-il pas possible de créer une fonction dans mes_fonctions.php3, qui calculerait la position de l'article à l'intérieur de sa rubrique ? Merci d'avance, Ernestine Modifié 9 Février 2005 par Ernestine Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 8 Février 2005 Auteur Partager Posté 8 Février 2005 Hum... C'est bon en fait c'est tout bête : <BOUCLE_avant(ARTICLES){id_rubrique}{age_relatif > 0}> <?php $compteur++; ?> </BOUCLE_avant> sur une seule ligne... Je me demande pourquoi je n'y avais pas pensé, j'ai cru que spip générait des lignes blanches tout seul... Cependant, cette méthode reste assez tordue, et utilise le php. Je maintiens donc ma question, j'aimerais savoir s'il n'exispte pas une méthode plus "propre"... Ernestine Lien vers le commentaire Partager sur d’autres sites More sharing options...
kdubs Posté 14 Février 2005 Partager Posté 14 Février 2005 Salut, Il existe dans spip une méthode pour tier dans l'ordre croissant tes rubriques et tes articles. Il suffit de mettre un numéro d'ordre un point et un espace dans le titre de ton article ou de ta rubrique. Du genre : 10. rubr1 20. rubr2 30. rubr3 et meme chose pour les articles dans les rubriques 10. art1 20. art2 30. art3 apres tu peux indiquer au squelette pour qu'il n'affiche pas le n° devant l'article ou pour ton cas tu laisses le numéro. [(#TITRE|supprimer_numero)] et voila ca marche . Ta solution et peut etre par là. Kdubs Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 14 Février 2005 Auteur Partager Posté 14 Février 2005 Merci Kdubs, Il y a du bon dans ce que tu dis. J'avais d'ailleurs utilisé une technique similaire dans un précédent journal en spip. Le problème, c'est que si on supprime un article, on se retrouve avec un "trou" dans le comptage... Et on est obligé du coup d'éditer les titres de tous les posts suivants. C'est un peu compliqué Mais ton idée n'est pas mauvaise A bientôt, Ernestine Lien vers le commentaire Partager sur d’autres sites More sharing options...
kdubs Posté 15 Février 2005 Partager Posté 15 Février 2005 salut Ernestine, En effet, tu as raisons, mon idée n'est pas terrible , pour tes questions de rapidité je crois que tu peux faire confiance aux php qui va te faire tes boucles en un clin, par contre s'il y a avait des requetes a une base de donnée, ca ne serais pas du tout la meme histoire. J'ai essayé, ton compteur en rajoutant un boucle jusqu'à 100 000,pour chaque boucle d'article, pour voir. D'apres toi.....??? resultat : imperceptible, L'autre solution coté client, qui serait de faire une fonction javascript me semble a proscrire (desactivation javascript, compatibilté navig) Conclusion : ton script est trés bien, s'il ne te semble pas assez propre, tu peux toujours le mettre dans un fichier.php et en faire un "include" dans ton squelette . a+ Christophe Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant