Vous êtes en SPIP 1.9.2 ou supérieur et en UTF8, vous avez une liste d’articles ou d’auteurs importante ? près de 1000 ? et vous souhaitez la voir s’afficher par ordre alphabétique ainsi
A|B|C|D|E|F...
Pire, vous voulez la trier en ne prenant en compte que ce qui suit l’article du titre et donc exclure le la les ou l’
Quoi ! vous voudriez en plus qu’à la demande du visiteur les articles s’affichent suivant la lettre demandée comme ici pour A :
animal(l’)
animaleries(les)
animaux(les)
Alors... suivez le guide !
On commence par la fonction qui permet d’extraire la première lettre.
On met cette fonction dans le fichier squelettes/mes_fonctions.php
qui est du pur php, et commençera donc par <?php pour finir par ?>
Vous pouvez déjà voir ce que ça donne dans une boucle !
[(#TITRE|onelettre)] devrait retourner A ou B ou Z
Utiliser #ARRAY
Avec SPIP 1.9.2 on va s’amuser sur la possibilité de stocker un array pour l’envoyer dans une boucle, on a donc deux boucles distinctes :
BOUCLE_listalpha n’affiche qu’une seule fois la première lettre et grace à SET{beginby[(#TITRE|onelettre)]...
stocke dans un tableau (array) la liste des articles de cette lettre,
pour tester le tableau de la lettre B on fera [(#GET{beginbyB}|print_r)] BOUCLE_artlettre, la deuxième boucle, récupère ensuite le tableau ainsi crée, grace à #ENV et si il n’y a pas de lettre demandé on commence par A #GET{beginby#ENV{lettre,A}simple non ?
On colle donc le code suivant dans le squelette de son choix, par exemple dans rubrique-5.html qui pourrait correspondre à un catalogue ou chaque livre est un article.
Toujours plus loin !
Ah ! mais... il y a l’animal et les animaux qui se sont mis sous le L !
ça ne va pas du tout ! et peut être aussi les lettres ne sont pas l’ordre alphabétique...
On reprend mes_fonctions.php et après on va changer le critère de tri dans la première BOUCLE (merci hubombing)
On remplace donc le critère par titre de la première BOUCLE par parsansL
Les Hics
Quelques hics subsistent, les mots avec accents ou avec par exemple Œ, ne sont pas classés dans la base, ainsi L’Œuvre ou L’écureuil se retrouve en bas de page des A.
On commence donc par une boucle simple qui va seulement chercher chaque lettre de l’alphabet, évidemment il vous faut suffisamment d’articles !
Pour résoudre l’affichage des accents dans leur bonne lettre, sachant que les accents du genre éèô et le cher e dans l’o sont stockés dans le tableau array du A, il faut empêcher l’affichage des articles commençant par L’Œuvre et réinterroger le tableau A en mettant une 4em boucle doublons alphabet
Eh mais, en plus mes articles ne sont pas du tout rangés là !!?
Psst, Il manque 3 fonctions encore !
Au final
Voici donc le code final, avec le nouveau critère de tri et les filtres ajoutés
bonjour,
Je n’arrive pas à faire fonctionner cette contribution avec spip 2. Est-ce que vous confirmez ?
J’ai fait quelques essais pour tenter de corriger, mais je tourne en rond. Avez-vous l’intention de mettre à jour cette contribution pour spip 2 ?
De plus, sur le site donné en exemple (librairie Quilombo), les pages restent vides, seul l’abécédaire apparaît. C’est justement ce que j’obtiens avec spip 2.
[(#REM) Stockage des noms des signataires dans Arraylettre]
[(#SETbeginby[(#NOM|lastfirstletter)],[(#GETbeginby[(#NOM|lastfirstletter)]|array_merge5#ARRAY#COMPTEUR_BOUCLE,#ID_SIGNATURE)])]
[(#REM) Affichage des signataires stockés dans Arraylettre]
#NOM - #NOM_SITE #URL_SITE
Cependant, je ne trouve pas la solution pour intégrer également une pagination dans l’affichage des signataires stockés dans Arraylettre. Si quelqu’un a une idée...
si vous voulez vous débarasser des titres commencant par des chiffres
ajouter cette ligne dans la fonction onelettre (avant le return)
if (is_numeric($texte)) $texte = "";
Bonjour,
Je développe sous SPIP un site d’histoire régionale dans lequel beaucoup de titres d’articles commencent par une année.
par exemple : 1789 - Etats généraux
Je recherche une méthode pour inclure dans le squelette des articles
une boucle qui permette d’afficher les titres des 3 (ou n) articles dont les titres ont un libellé < ou = à cette date,
et une boucle qui permette d’afficher les titres des 3 (ou n) articles dont les titres ont un libellé > ou égal à cette date
Le but étant d’afficher la liste des titres de 6 (ou n) articles, comme dans l’exemple ci-dessous, pour faire apparaître les titres des articles les plus proches de l’article en cours.
1785 - Titre Bla bla
1787 - Titre Bla bla
1788 - Titre Bla bla
1789 - Etats généraux (l’article en cours d’affichage)
1790 - Titre Bla bla
1791 - Titre Bla bla
1792 - Titre Bla bla
Je pense que ça ne doit pas être très éloigné de ce que vous proposez dans cette page, mais je n’ai pas su trouver le truc.
Jusque là tout fonctionnait bien sauf depuis que mon hebergeur est passé en PHP 5 (1and1) je me retrouve avec des erreurs pour lire ma liste alphabétique.
J’ai systématiquement ce message :
Warning : array_merge() [function.array-merge] : Argument #1 is not an array in /homepages/41/d140278309/htdocs/www/ecrire/public/composer.php(46) : eval()’d code on line 93
J’ai essayé la solution donné par Marc mais rien n’y fait.
Quelqu’un pourrait-il m’aider ?
Merci
Le mini-site spip-info.net a pour vocation de jouer le rôle d’une « carte de visite » pour SPIP.
Un utilisateur recherchant un outil pour construire son site, ou celui de son organisation, y trouvera les informations lui permettant de se (...)
Panique à bord : votre ami, votre patron, votre association, vous demande de créer un site internet, et vous n’y connaissez rien, mais paraissez, à priori, le plus apte à le faire. Bref, vous êtes volontaire d’office. Bon cœur, vous (...)
Une lettre d’information avec SPIP - SPIP-listes permet la gestion et l’envoi de lettres d’information (newsletters) au moyen d’un courriel au format html ou texte. Il est possible d’envoyer des messages aux abonnés qui se sont formellement inscrits à une ou plusieurs lettres (...)
Galerie / diaporama en modèle - Plugin ajoutant le modèle <diapoXX> permettant d’insérer les images de l’article XX sous forme de galerie/diaporama reprenant le fonctionnement de la galerie Walma.
votre site SPIP sur iPhone - iSPIP fournit une version d’un site SPIP optimisée pour les terminaux iPhone et iPodTouch basée sur la bibliothèque iUI développée par Joe Hewitt.