Aller au contenu

Sujets conseillés

Posté (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é par Ernestine
Posté

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

Posté

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

Posté

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é :wacko:

Mais ton idée n'est pas mauvaise ;)

A bientôt,

Ernestine

Posté

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, :up:

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...