Filtre swap

Objectif

Vous désirez classer vos auteurs par ordre alphabétique, vous avez une bibliothèque et vous utilisez les mots clés pour indexer les auteurs, ce filtre est pour vous.

En effet, jusqu’à présent, pour classer des auteurs par ordre alphabétique, nous n’avions qu’un moyen. Dans les champs #NOM de la table auteur et #TITRE de la table mot clé, il fallait saisir les noms ainsi : NOM, PRENOM si on voulait ensuite les classer par ordre alphabétique. Ex la boucle

<BOUCLE_nom(AUTEURS){par nom}>
#NOM
</BOUCLE_nom>

affichait les auteurs ainsi :
Abasolo, José Javier
Abbey, Edward
Abbott, Jeff

C’était un beau classement sauf que le sens de lecture normal est prénom nom et que les internautes saisissent ainsi leur requête sur google.

Confronté à ce problème, j’ai demandé à mon prof de php, le génial CM, de m’aider à écrire une petite fonction qui permette de transformer lors de l’affichage Abbot, Jeff en Jeff Abbot.

Cette contrib comprend la fonction à copier dans votre fichier mes_fonctions.php et deux exemples de boucle.

Code à copier dans le fichier mes_fonctions.php

function swap($texte){
  $pieces=explode(",",$texte);
  if(count($pieces)==2){
    $return=$pieces[1]." ".$pieces[0];
  }
  else $return=$texte;
  return $return;
}

exemples de boucle

Dans le champ #NOM vous saisissez NOM, PRENOM. La virgule permettra au filtre d’inverser l’affichage du champ en PRENOM NOM

Pour trier les auteurs de votre site

<BOUCLE_nom(AUTEURS){par nom}>
[(#NOM|swap)]
</BOUCLE_nom>

Pour trier des mots clés qui seraient des auteurs de roman

<BOUCLE_mot(MOTS){id_groupe=2}{par titre}>
[(#TITRE|swap)]
</BOUCLE_mot>

Amusez-vous bien !

Discussion

6 discussions

  • 3

    Bonjour ,

    Excusez moi de faire remonter ce vieux fil !

    Je suis grandement intéressé par ce filtre, mais après maintes tests ça ne “swap” rien chez moi!
    :-)

    Est-il obsolète ?

    Bien cordialement

    • Il fonctionne toujours.
      Je l’utilise encore sur https://www.bibliosurf.com qui tourne sur SPIP 4 dernière version.
      Il faut bien coller la fonction dans le fichier mes _fonctions.php et ensuite utiliser le code dans votre squelette.

    • Merci de votre retour,

      bizarre chez moi j’ai une erreur : Filtre swap non défini
      pourtant j’ai bien mis le script dans mes_fonctions.php
      et j’utilise [(#TITRE|swap)] dans une boucle ARTICLES :

      <BOUCLE_lesarticlesdumot(ARTICLES){id_rubrique} {par titre}{pagination 10}>
                          <div class="article-de-liste avectheme#COULEUR">
                              [<div class="image-liste-article">
                                  <a href="#URL_ARTICLE">
                                      (#LOGO_ARTICLE|image_passe_partout{200,200}|image_recadre{200,200,center}|inserer_attribut{alt,#TITRE})
                                  </a>
                              </div>]
                              <div class="texte-liste-article">
                                  <h3><a href="#URL_ARTICLE">[(#TITRE|swap)]</a></h3>
                                  <small><B_les_articles_lies2>#TOTAL_BOUCLE articles<BOUCLE_les_articles_lies2(ARTICLES_LIES){id_article}{par rang}>
      								</BOUCLE_les_articles_lies2>
                                  </small>
                                  <p>[(#TEXTE|couper{270})]</p>
                                  <a href="#URL_ARTICLE" >+ Lire la suite</a>
                              </div>
       
                          </div>
                          <hr/>
      				</BOUCLE_lesarticlesdumot>

      Je ne comprends pas :-(

    • mea culpa !

      j’avais 2 fichiers mes_fonctions.php

      Merci encore je vais pouvoir tester cela en m’amusant , j’espère

      Bien cordialement

    Reply to this message

  • Voici une version adaptée au formatage scientique des publications :
    change un nom tel que :

    Virgo-Pidou Bernadette
    en
    Virgo-Pidou B

    function nompublication($texte){
     $pieces=explode(" ",$texte);
     $pieces[1]=substr($pieces[1],0,1); 
     
     if(count($pieces)==2){
       $return=$pieces[0].", ".$pieces[1];
     }
     else $return=$texte;
     return $return;
    }

    Encore améliorable : pour les prénoms composés : garder la majuscule de chaques parties et séparer avec un tiret mais pour moi ça me suffit pour le moment

    Reply to this message

  • Une petite extension dont j’ai eu besoin qui permet d’afficher une liste d’auteurs séparés par des ’and’ (genre, comme on trouve dans les entrées bibtex) :

     swap_all($texte) {
     $pieces=explode("and",$texte);
     $res=array_map("swap",$pieces);
    
     $res=implode(',',$res);
     return $res;
    }

    Reply to this message

  • Ça marche comme sur des roulettes : merci !

    Il faudrait peut-être mentionner qu’il faut aller chercher /dist/modeles/lesauteurs.html, l’enregistrer dans /squelettes/modeles/lesauteurs.html, et ajouter le filtre swap à la balise #NOM comme partout dans les autres squelettes ?

    Reply to this message

  • et que le filtre swap est très pratique.

    Reply to this message

  • 1

    La même chose existe depuis longtemps en beaucoup plus complet http://www.spip-contrib.net/Amelior...

    • Philippe Giron

      Sauf que la contribution citée ci-dessous est déjà (assez) ancienne et que les auteurs ne répondent pas aux questions qu’on peut leur poser... snif...

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom