Améliorer l’affichage public et la gestion des auteurs et traducteurs d’un site SPIP

Quelques outils pour améliorer sensiblement l’affichage des auteurs et traducteurs sur votre site sous SPIP et leur gestion dans l’interface privée.

Nos objectifs

Nous nous donnons trois objectifs dans le cadre de cet article [1].

-  Gérer la « fonction » des auteurs : des secrétaires rédaction et des traducteurs. [2] Différentes personnes contribuent au produit fini qu’est un article publié sur un site web. Nous identifions trois fonctions essentielles dans ce processus [3] : l’auteur, qui écrit l’article, le secrétaire de rédaction (ou éditeur), qui assure l’aspect technique de la mise en ligne et le traducteur [4]. Ce constat - qui tient de l’évidence dans la plupart des cas - peut cependant être perdu de vue quand on a recourt à un outil de publication collaborative comme SPIP.

  • Des « secrétaires de rédaction ». Selon la définition que nous avons donnée du « secrétaire de rédaction » (ou « éditeur »), le site public ne rendra compte que des auteurs des textes et laissera ce qui concerne les secrétaires de rédaction à la gestion éditoriale interne du site. Une même identité dans SPIP ne pourra donc à la fois publier ses propres articles et encoder des articles écrits par d’autres.

    On pourrait se contenter de ne pas conserver de liaison entre un article et la personne qui l’a mis en ligne, ce qui résoudrait le problème. Il nous semble pourtant que, dès que plusieurs personnes travaillent ensemble sur un même site web, il devient utile de conserver une telle liaison : pour permettre au « secrétaire » de revenir sur ses articles par exemple, ou pour permettre à l’administrateur du site de connaître l’activité de publication des différents secrétaires.

  • Des traducteurs. Selon la même logique, nous souhaitons identifier le traducteur d’un article en le séparant clairement du ou des auteurs. Pour chaque article, nous souhaitons par exemple obtenir sur le site public un rendu de la forme suivante [5] :

    Titre
    jeudi 3 mars 2000,
    par Boule et Bill,
    traduit par Machin

-  Permettre le classement alphabétique des auteurs. Par défaut, SPIP ne propose qu’un seul champ pour l’encodage des articles. Cela implique qu’il vous sera impossible de classer vos auteurs par ordre alphabétique si vous les encodez selon une forme

Prénom Nom

Inversément, si vous les encodez sous la forme :

Nom Prénom

vous pourrez les classer par ordre alphabétique mais l’affichage public sera détérioré. Nous proposons ici une méthode permettant de classer des auteurs tout en conservant la maîtrise de leur affichage.

-  Uniformiser l’affichage et le rendre plus joli. Pour chaque article, nous souhaitons que la liste des auteurs soit présentée :

  • par ordre alphébétique des noms de famille,
  • précédée du mot "par",
  • en séparant les noms par des virgules, sauf les deux derniers qui seront séparés par le mot "et",
  • en affichant les prénoms en minuscules avec la première lettre en majuscule et les nom de familles en petites majuscules (« small caps ») avec la première lettre en majuscule.

Un exemple de ce que donnent les propositions faites dans ce texte est disponible sur le site http://tchouktchouk.eu.org/, une revue de presse ferroviaire [6]. Les squelettes de ce site sont librement consultables à l’adresse http://tchouktchouk.eu.org/skel/.

Avant d’en venir à la réalisation des objectifs proposés, il n’est pas inutile de souligner que la perspective dans laquelle est traitée, dans ce texte, la question de l’affichage des auteurs correspond sans doute un peu plus directement à un usage particulier de SPIP qui est par exemple celui fait par revue papier mettant ses articles sur le web : celui dans lequel une ou un nombre réduit de personnes font le travail de mettre en ligne des articles signés par un grand nombre d’auteurs (ceux-ci ne réalisant pas le travail d’encodage de leur(s) articles(s) ; ceci par opposition avec l’usage « natif » de spip qui est le webzine collaboratif, pour lequel un certain nombre de propositions faites ici sont sans doute peu pertinentes.

1. Des secrétaires de rédaction et des traducteurs

Par convention, nous allons encoder d’une façon particulière le nom des secrétaires de rédaction (dont la fonction a été définie plus haut) et celui des traducteurs : nous ferons respectivement précéder leur nom d’un « @ » et d’un « # » [7], ce qui nous permettra aussi de les lister facilement dans l’interface privée [8].

En ajoutant un critère dans nos boucles AUTEURS, nous pourrons sélectionner le type d’auteurs que nous voulons afficher. Par exemple, le critère {nom!==^@} (littéralement : « ne commençant pas par "@" ») inséré dans tous les boucles AUTEURS du site permettra d’éviter qu’il soit fait mention de nos secrétaires de rédaction sur le site public. Pour afficher les traducteurs d’un article, nous utiliserons le critère {nom==^#}, etc.

Ainsi, la boucle suivante affiche les auteurs de l’article (et pas les traducteurs ni les secrétaires de rédaction).

<BOUCLE_signature(AUTEURS){id_article}{par nom}{nom!==^@}{nom!==^#}{", "}>#NOM</BOUCLE_signature>

Autre exemple, la boucle suivante affiche les traducteurs d’un article.

<BOUCLE_signature(AUTEURS){id_article}{par nom}{nom==^#}{", "}>#NOM</BOUCLE_signature>

2. Gérer le classement alphabétique

Par convention, nous supposons que nos les noms de nos auteurs sont composés d’un prénom (ou plusieurs) et d’un nom de famille. Nous considérons en outre que c’est en fonction de ce nom de famille qu’un classement alphabétique des auteurs est le plus pertinent. Nous supposons enfin qu’il est préférable de citer une personne en commençant par son prénom. Ces considérations culturelles étant acquises, nous pouvons passer à la mise en oeuvre.

La manière la plus facile d’ordonner une liste de données, c’est de s’adresser au système de gestion de la base de données. Par conséquent, les données doient y être stockées dans un format qui le permet sans trop se compliquer la vie. Autrement dit, notre champ « nom » doit commencer par le nom de famille.

Nous décidons donc, par convention, d’encoder systématiquement les noms de nos auteurs en commençant par le nom suivi d’une astérisque ("*« ) puis du prénom et autres titres, seconds prénoms,... Ainsi, le nom »naturel" d’un auteur :

Pdt. William J. Clinton

devient, selon notre nouvelle norme d’encodage :

Clinton*Pdt. William J.

A moins que vous n’ayez de raison particulière de le faire (autre usage de la base de données), il n’est pas essentiel d’insister ici sur l’usage des majuscules et minuscules : nous harmoniserons tout cela lors de l’étape de l’affichage.

Dans l’espace privé de notre site, les articles de cet auteur seront attribués à l’auteur Clinton*William J. ; cela n’est pas forcément très élégant, mais tout de même parfaitement lisible.

Avantage immédiat, dans la liste des auteurs, nous récupérons un classement alphabétique parfait, de la forme :

Bush*George W.
Clinton*Hillary
Clinton*William J.

Sur le site public, une boucle AUTEURS classée {par nom} fournira donc un classement alphabétique correct (basé sur le nom de famille).

Pour remettre l’affichage « à l’endroit » sur le site public, il suffira d’utiliser un filtre - nous allons le créer tout de suite et l’appeler prenom_nom - que nous appliquerons à la balise #NOM :

[(#NOM|prenom_nom)]

Tant qu’à faire, nous écrivons deux autres filtres pour afficher respectivement le nom ou le prénom seul. Nous obtenons donc trois filtres (et quelques fonctions subordonnées), à placer dans le fichier mes_fonctions.php3 (ou dans un autre fichier que vous chargerez dans mes_fonctions.php3 avec l’instruction require) :

Mise à jour du fichier : mardi 20 janvier 2003 à 22h58.

Notez que chacune des trois fonctions renvoie des chaînes nettoyées des « @- » (ou « @_ » ou « @  » ou « @ ») ainsi que des « #- » (ou « #_ » ou « #  » ou « # ») qui les précèdent éventuellement. Cela permet d’utiliser le nom d’un secrétaire de rédaction ou d’un traducteur sur le site public sans se préoccuper de l’affichage [9].

Enfin, s’il n’y a pas de « * » dans la chaîne :

  • la fonction prenom() ne renvoie rien ;
  • la fonction nom() renvoie la chaîne sans rien changer (par exemple un pseudo) ;
  • la fonction prenom_nom() renvoie la chaîne sans rien changer ;

Cela permet d’introduire un peu de souplesse et d’afficher correctement le nom d’Aristote, d’Alain, du vengeur masqué ou de n’importe que pseudo, lesquels ne sont pas, contrairement à nos prémisses, composés d’un prénom suivi d’un nom [10].

3. Mise en forme

Ces trois fonctions, qu’il vous suffit d’ajouter dans votre fichier mes_fonctions.php3 [11] vont nous permettre de citer nos auteurs de façon beaucoup plus fine.

Par exemple, la ligne suivante, insérée dans un squelette, nous renverra le prénom suivi du nom, ce dernier étant mis en forme selon la classe CSS .nom.

[(#NOM|prenom) ][<span class="nom">(#NOM|nom)</span>]

Cela nous permet, par exemple, d’afficher le nom en petites majuscules (small caps), simplement en le précisant dans la feuille de style [12] de la façon suivante :

.nom {
	font-variant: small-caps;
}

Pour terminer, notez que ces filtres tels qu’ils sont proposés ici harmonisent l’affichage selon la norme suivante :

-  prenom() renvoie le prénom après l’avoir passé en minuscules puis avoir transformé en majuscule l’initiale de chaque mot (ainsi que l’initiale de chaque partie d’un mot composé).

-  nom() fait de même... avec le nom.

-  prenom_nom() concatène les résultats obtenus par prenom() et par nom() (séparés par un espace insécable) après avoir passé le nom en majuscules (ce qui par exemple utile pour me champ titre d’une page html où il n’est pas possible de créer des petites majuscules).

Par exemple, si la valeur de notre champ #NOM est « durant-DUBOIS*dr. anne-sophie », placé dans un squelette, le code

[(#NOM|prenom) ][(#NOM|nom)] [13]

renverra

Dr. Anne-Sophie Durant-Dubois

tandis que le code

[(#NOM|prenom) ][(#NOM|majuscules|nom)] [14]

renverra

Dr. Anne-Sophie DURANT-DUBOIS

Comme nous le disions plus haut, tout ceci nous permet de ne pas trop nous soucier de la précision de l’encodage des noms des auteurs : le rendu public sera de toute façon homogène.

4. Rendre la liste des auteurs plus jolie

Pour terminer, plutôt que comme une simple liste de noms séparés par des virgules, nous allons afficher la liste de nos auteurs sous la forme :

par Albert Durant, Claude Dubois et Jean Dupont

Une petite fonction php va nous y aider :

<?

/*
 * Fonction auteur_et_auteur()
 * 
 * Auteur : Philippe Rivière <fil@rezo.net>
 * 
 * Copyright : GNU Public Licence
 * 
 * Rajouter un "et" à la place de la virgule entre les deux derniers 
 * auteurs d'une liste
 * 
 */
function auteur_et_auteur($texte) {
	return ereg_replace(", ([^,]*)$"," et \\1",$texte);
}

?>

Attention, cette fonction doit être placée dans le squelette (et non dans le fichier mes_fonctions.php3 ou ailleurs) : il doit en effet s’exécuter à chaque lecture de la page (et non uniquement lors du calcul de la page).

Si vous utilisez plusieurs boucles AUTEURS dans un même squelette, veillez à ne pas répéter la fonction auteur_et_auteur plusieurs fois, sans quoi vous aurez une erreur php [15].

*

Bref, voici les quelques lignes qui, placées dans un squelette, répondent à notre objectif initial [16] [17] :

<? $tous_auteurs = auteur_et_auteur('<BOUCLE_signature(AUTEURS){id_article}{par nom}{nom!==^@} {", "}>[(#NOM|prenom|texte_script) ][<span class="nom">(#NOM|nom|texte_script)</span>]</BOUCLE_signature>');

if ($tous_auteurs) echo " par ".$tous_auteurs;

?>

Nous avons bien renvoyé la liste des auteurs :

  • classée par ordre alphébétique des noms de famille,
  • précédée du mot « par »,
  • en séparant les noms par des virgules, sauf les deux derniers qui seront séparés par le mot « et »,
  • en affichant les prénoms en minuscules avec la première lettre en majuscule et les nom de familles en petites majuscules avec la première lettre en majuscule.
*

Encore une boucle pour le plaisir, voici l’affichage des auteurs et des traducteurs d’un article :

<?

# On récupère les auteurs
$tous_auteurs = auteur_et_auteur('<BOUCLE_signature(AUTEURS) {id_article}{par nom}{nom!==^@}{nom!==^#}{", "}>[(#NOM|prenom|texte_script) ][<span class="nom">(#NOM|nom|texte_script)</span>]</BOUCLE_signature>');

# On les affiche
if ($tous_auteurs) echo "par ".$tous_auteurs;

# On récupère les traducteurs
$tous_auteurs_trad = auteur_et_auteur('<BOUCLE_signature_trad(AUTEURS) {id_article} {par nom} {nom==^#} {", "}>[(#NOM|prenom|texte_script) ][<span class="nom">(#NOM|nom|texte_script)</span>]</BOUCLE_signature_trad>');

# On les affiche
if ($tous_auteurs_trad) echo ", traduit par ".$tous_auteurs_trad;

?>

Notes

[1Notez que plusieurs idées développées ici sont issues des discussions de la liste spip-dev et notamment des contributions postées par Fil et ARNO*. Après une tentative - pour le moment avortée - de publier ceci dans les « trucs et astuces » du site officiel de SPIP, je reprends ici l’essentiel, de façon à ce que les outils développés dans le cadre de cette discussion soient disponibles quelque part. Pour plus d’info, voyez notamment http://www.spip.net/ecrire/articles....

[2Rappellons - avant d’aller plus loin - que SPIP permet de créer des auteurs « virtuels », c’est-à-dire s’affichant normalement dans le site public mais n’ayant pas accès à l’interface privée. Ils se caractérisent par le fait qu’aucun login / mot de passe n’est défini pour eux. Chaque fois que vous utilisez le bouton « ajouter un auteur à cet article » (en étant loggué en administrateur), vous créez un auteur virtuel. Dans le cas qui nous occupe, c’est ce statut d’auteur virtuel qui sera utilisé la plupart du temps pour les auteurs (mais ce n’est pas obligatoire) tandis que le statut d’administrateur ou d’administrateur restreint conviendra mieux aux « secrétaires de rédaction ». Pour les traducteurs, nous utiliserons plutôt le statut de rédacteur (avec accès à l’interface privée).

[3Avant d’aller plus loin, un petite remarque sur l’usage du bidule : les outils introduits ici, bien que très utiles ;-), sont - de notre point de vue - d’un usage délicat dans un cadre de travail égalitaire et collaboratif tel que celui que spip essaye plus ou moins de promouvoir. La fonction crée l’organe. L’organe induit l’usage. Et l’usage, ça peut être beaucoup de choses, notamment une distinction très peu démocratique entre « pontes » et « grouillots », pour reprendre les mots de Pascale. Si vous assumez une telle distinction, très bien, ça vous regarde. Dans le cas contraire, soyez attentifs.

[4Notez que rien n’empêche, bien entendu, qu’une même personne joue plusieurs rôles ; c’est même très fréquent. Dans ce cas, il suffit de créer autant d’identités pour chaque auteur qu’il exerce de fonctions : par exemple, une identité « usuelle » (celle sous laquelle on se loggue) qui est celle du « secrétaire de rédation » et deux identités « virtuelles » - juste le nom et le prénom en vue de l’affichage sur le site public - pour les fonctions « auteur » et « traducteur ». De cette manière, on peut séparer clairement les articles qu’on a écrit de ceux qu’on a traduit de ceux qu’on a a uniquement encodés.

[5On pourrait aller plus loin en faisant référence à l’original pour avoir quelque chose comme « Titre de l’article, mardi 2 février 2000, par machin-broll, traduit du suédois le jeudi 2 mars 2000 par trucmuche ».

[6Qui, soit dit en passant, présente également d’autres contributions spip : le glossaire interne, les squelettes différents pour différents groupes de mots-clés,...

[7Suivis, au choix, d’un espace, d’un underscore, d’un tiret ou de rien du tout.

[8Ce système tient bien évidemment du bricolage : si un même auteur est à la fois le traducteur d’un article et l’auteur d’un autre, il nous faudra créer deux identités pour cet auteur, ce qui signifie qu’il sera difficile de lister toutes les productions de cet auteur. L’idéal serait de créer, dans les tables liant les auteurs aux objets, un champ intermédiaire précisant la nature de la relation liant un auteur (unique dès lors) et un article (auteur, traducteur, éditeur,... ou autre). Mais là, on sort de ce qui est facilement faisable dans le cadre d’une contrib.

[9Comme on l’a vu plus haut, la sélection du type d’auteur sur le site public s’inscrit dans les boucles.

[10Pour résumer exactement l’action de notre jeu de fonctions (étant donné qu’une chaîne est définie comme pouvant contenir des caractères alphanumériques, des espaces et des tirets) :

  • « chaine1*chaine2 » (ou « @ chaine1*chaine2 ») est considérée comme un nom suivi d’un prénom, que renvoient respectivement les fonctions du même nom, après traitement.
  • « chaine* » (ou « @ chaine* ») est considérée comme un nom seul, donc la fonction prenom() ne renvoie rien tandis que la fonction nom() renvoie le nom après l’avoir traité (passage en minuscules puis passage de l’initiale en majuscule).
  • « *chaine » (ou « @ *chaine ») est condidérée comme un prénom seul (et donc la fonction nom() ne renvoie rien). Bien sûr, établir une distinction entre un nom seul et un prénom seul semble a priori peu utile : ça permettra quand même de différencier l’affichage du nom ou du prénom. L’usage de cette norme aura également pour effet logique, dans le classement alphabétique, de laisser les noms seuls parmi la liste des auteurs dotés d’un nom et d’un prénom tandis que les prénoms seuls en seront séparés (ce qui permet par exemple de demander facilement à la base de données de ne pas renvoyer les prénoms ou de ne renvoyer qu’eux).
  • « chaine » (ou « @ chaine ») est condidérée comme un pseudo, donc la fonction prenom() ne renvoie rien. Petite subtilité par rapport au format chaine*, aucune modification n’est faite par la fonction nom(). Par exemple, nom("dEUS*") renvoie « Deus » tandis que nom("dEUS") renvoie « dEUS » sans rien changer. Cette petite subtilité rend par exemple possible l’installation du présent jeu de fonctions sur un site sans devoir changer immédiatement tous les noms des auteurs (puisque ceux qui sont encodés au format « Prénom Nom » seront retournés tels quels).

[11après l’avoir créé dans le répertoire racine de votre spip si ce n’est déjà fait

[12Dans les squelettes par défaut de la distribution officielle de SPIP, il s’agit du fichier spip_style.css.

[13Notez que l’espace entre le prénom et le nom est placé dans la partie conditionnelle de la boucle prénom : s’il n’y a pas de prénom, il ne sera pas affiché. Cela peut s’avérer utile dans le cas de certaines mises en pages fines. S’il n’y a qu’un prénom, l’espace s’affichera indûment, mais après le mot, ce qui ne pose pas de problème de mise en page (et puis comme il n’est pas possible de créer un affichage doublement conditionnel avec la syntaxe de SPIP, on ne va pas non plus se casser la tête).

[14L’ordre des filtres est ici important : majuscules doit s’exécuter après nom et doit donc être placé avant

[15Une solution facile à ce problème consiste à placer la fonction dans le fichier d’en-tête de votre si vous en avec un ou à conditionner le chargement de la fonction par une constante qui garantira qu’on ne la charge pas plusieurs fois. En ce qui me concerne, j’ai placé cette fonction dans un petit fichier annexe auquel je fais systématiquement appel dans le fichier d’en-tête.

[16Pour autant, bien sûr que les filtres nom et prenom soient disponibles dans le fichier mes_fonctions.php3, que la fonctionauteur_et_auteur() ait été chargée et que la classe .nom soit définie dans la feuille de style.

[17Notez la nouvelle construction avec le filtre texte_script qui remplace l’ancienne écriture du type $var = stripslashes('<BOUCLE>[(#BALISE|addslashes)]</BOUCLE>'); pour nettoyer les chaînes qu’on passe dans le script php.

Discussion

8 discussions

  • Bonjour,
    Cette merveilleuse contrib pose un problème au passage à PHP 7 car elle contient la fonction « ereg_replace » qui a été supprimée.

    Pour éviter d’avoir de gros messages d’erreur sur votre site au passage à PHP 7, il faudra donc la remplacer par « preg_replace » ou « str_replace ». Comme proposé par michel_leble ici : https://forum.spip.net/fr_275665.html?debut_forums=%40275667#forum275674

    Répondre à ce message

  • Bonjour,

    dans mon champ « pseudo ou nom » de spip, j’ai « prénom nom ».
    Je souhaiterai n’afficher QUE le nom, donc soit le dernier mot, soit le second mot, soit ce qu’il y a après l’espace «   ».

    j’ai testé vos fonctions en les modifiant selon mes envies mais je n’ai pas réussi à réaliser ce que je veux.

    Pouvez vous m’indiquer la procédure à suivre ?

    Répondre à ce message

  • 1
    Philippe Giron

    Bonjour,
    J’ai peut-être mal lu, mais existe-t-il un plugin depuis cette contrib (déjà ancienne), pour classer les auteurs par ordre alphabétique du nom ?
    Cordialement,

    Répondre à ce message

  • 5

    Bonjour,

    Bravo pour cette contrib très pratique qui marchait très bien...

    Je viens de passer en SPIP 1.8.2.d et malheureusement voilà ce qui s’affiche sur la page :

    span style=’text-transform : uppercase’ span style=’text-transform : uppercase’ xavier span style=’text-transform : uppercase’ span style=’text-transform : uppercase’ span transform : uppercase’ style=’text-transform : transform : uppercase’ uppercase’ dupond’

    au lieu de : Xavier DUPOND

    avec le code qui va bien dans le squelette (ca marchait très bien en 1.8.1)

    Ce problème est il arrivé à d’autres, existe’il un « patch »

    Merci

    • François Schreuer

      Curieux. J’utilise cette contrib sur une petite dizaine de sites web (tous sous 1.8.2) sans aucun problème.

      Peux-tu me donner l’url de la page où se passe le problème, ainsi que l’url du squelette ?

    • J’ai le même problème avec 1.8.2d

    • Bonjour,

      Je répond à mon message n° 4.
      J’ai trouvé une solution qui consiste à changer l’option par défaut proposé pour la fonction « harmonise_nom » dans le fichier mes_fonctions.php3.

      J’ai utilisé la deuxième option (Ne rien faire) et là ca fonctionne sous SPIP 1.8.2.d.
      Le troisième choix fonctionne aussi, mais pas les 1er et 4es.
      Il semble que la fonction « ucwords_amelioree » pose problème sous 1.8.2.d ?

      Un avis là dessus ?

      Merci

      Emmanuel GOBIER

    • J’ai le même problème avec SPIP 1.9.2

    • je précise que je règle le problème de la même façon dans 1.9.2c :

      	
      // Ne fait rien
      return trim($texte);

    Répondre à ce message

  • bonjour

    contrib installé sur un site 1.9.2c -ça marche très bien
    mais, là je voudrais ajouter le critère tout pour que tous les auteurs s’affichent dans la liste même s’ils n’ont pas publié d’articles... et du coup ça ne marche plus...
    j’ai l’impression que du coup ça affiche la liste des auteurs par leur login... ce qui est un peu bizarre

    est-ce que j’ai raté quelquechose ?

    voilà la boucle qui marche :

    (#NOM(#NOM

    et la boucle qui marche plus :

    (#NOM(#NOM

    merci de votre aide

    aud

    Répondre à ce message

  • Une remarque en passant : je me demande s’il ne vaudrait pas mieux promouvoir une autre syntaxe, plus intuitive que l’étoile, pour séparer le nom et le prénom, à savoir :

    Nom, Prénom

    L’idée m’est venu en lisant http://digital-web.com/articles/wri... : l’idéal est quand même d’avoir des champs lisibles aussi bien par les humains que par les machines.

    Répondre à ce message

  • 3

    Une erreur se produise lorsque j’utilise « ’ » dans un nom ou prénom, ça devient « &8217; » après l’utilisation du filtre |prenom_nom ou |nom.

    e.g.

    John O’Farrell->John O&8217;Farrell

    Dlawer Ala’Aldeen->Dlawer Ala&8217;Aldeen

    • Effectivement. Le problème est connu (et on le retrouve à d’autres endroits dans spip).

      Une solution, pas hyper-élégante, mais qui fonctionne, consiste à remplacer la fonction harmonise_noms par la suivante :

      function harmonise_noms($texte) {
      return str_replace('&8217;','\'',ucwords_amelioree(strtolower(trim(str_replace("*"," ",str_replace("_"," ",$texte))))));
      }
    • catherine

      super avec cette contrib mes auteurs sont joliment classés par nom de famille.
      J’ai appliqué le patch pour les apostrophes mais il me les remplace par \
      ex : Machin D’HIVER
      devient Machin D\HIVER

    • C’est une erreur dans les expressions régulières.

      Il suffit de rajouter un ^ au début de chaque expression régulière.

      Ceci :

      if(strstr(ereg_replace("^(@-|@-|@ |@|#-|#_|# |#)","",$texte),"*"))

      à la place de ceci :

      if(strstr(ereg_replace("(@-|@-|@ |@|#-|#_|# |#)","",$texte),"*"))

      François

    Répondre à ce message

  • 2

    D’après moi, il y a une paranthèse en trop juste après </BOUCLE_signature> dans cette boucle :

    <? $tous_auteurs = auteur_et_auteur('<BOUCLE_signature(AUTEURS){id_article}{par nom}{nom!==^@} {", "}>[(#NOM|prenom|texte_script) ][<span class="nom">(#NOM|nom|texte_script)</span>]</BOUCLE_signature>'));
    
    if ($tous_auteurs) echo " par ".$tous_auteurs;
    
    ?>

    Sinon bravo et merci pour votre contribution.

    Répondre à ce message

Ajouter un commentaire

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
  • 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 apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom