Trier des éléments numérotés par ordre alphabétique
Par bb, mardi 13 mai 2008 à 21:51 :: SPIP ::#80
Le problème
Comment afficher une liste d’éléments ayant un numéro d’ordre comme préfixe de leur titre (du genre "1. titre rubrique 1", "2. titre rubrique 2"...) triés par ordre alphabétique SANS tenir compte du numéro ?
Le code
<ul>
<BOUCLE_t(RUBRIQUES){tout} {par SUBSTRING_INDEX(titre,".",-1)}>
<li>#TITRE</li>
</BOUCLE_t>
</ul>L’explication
La syntaxe du critère {par SUBSTRING_INDEX(titre,".",-1)} est une fonction MySQL dont voici la description :
SUBSTRING_INDEX(str,delim,count)Retourne une portion de la chaîne de caractères str, située avant count occurrences du délimiteur delim. Si l’argument count est positif, tout ce qui précède le délimiteur final sera retourné. Si l’argument count est négatif, tout ce qui suit le délimiteur final sera retourné.
Cela nous permet de classer les rubriques de notre boucle "par" leur titre auquel on "retire" tout ce qui précède le délimiteur (dans notre cas un point).
De la même manière, on peut utiliser tout type de fonction MySQL de chaîne de caractères pour trier les éléments d’une boucle en insérant la fonction dans le critère {par ...}.
Merci cy_altern et azerttyu
Commentaires
Bonjour,
Je cherche à savoir comment faire en sorte que la liste des articles sous une rubrique s’affiche par ordre chronologique décroissant. Pour l’instant tous les articles sous la rubrique apparaissent par ordre alphabétique de sorte que les visiteurs ne voient pas les derniers articles.
Merci de votre aide.
Bonsoir,
Si ta question porte bien sur le classement des articles dans l’espace privé de SPIP, je viens de publier une astuce à ce sujet.
Modifier l’ordre d’affichage des articles dans l’espace privé de SPIP
++
Bonjour,
Le classement dans l’espace privé est tout à fait correcte et me convient parfaitement : les derniers articles publiés sont classés par ordre chronologique décroissant.
Ce qui me désole c’est l’affichage par ordre alphabétique des articles à la publication sous une rubrique. Cela rend difficile la lecture de la page puisque le lecteur doit chercher l’information la plus récente, ce qui n’est pas toujours évident.
Voici une page exemple : http://www.sprim-fo.org/spip.php?ru...
Ici la ligne 3 commençant par la letrre G devrait se trouver sur la première ligne des derniers articles publiés, ainsi que cela se fait sur la page d’accueil (qui fonctionne très bien) .http://www.sprim-fo.org/
Merci de votre aide précieuse.
Salut,
Pour cela il te faut modifier ton squelette rubrique.html pour remplacer le critère
{par titre}par{!par date}dans la boucle qui affiche les articles...++