Fonctionnalité native depuis SPIP 3.x
Se reporter au filtre https://www.spip.net/fr_article4002.html
Pour les versions précédentes de SPIP
Particulièrement utile selon moi pour afficher le nombre d’articles, de messages dans le forum, ...
/*
* +----------------------------------+
* Nom du Filtre : accord_pluriel
* +----------------------------------+
* Date : mercredi 16 avril 2003
* Auteur : Roustoubi (roustoubi@tiscali.fr)
* +-------------------------------------+
* Fonctions de ce filtre :
* Accorde le nom singulier passé en paramètre avec le nombre qui le quantifie
* Exemple : [#TOTAL_BOUCLE (#TOTAL_BOUCLE|accord_pluriel{article})]
* +-------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=111
*/
function accord_pluriel ($nombre, $nom1='', $nom2='') {
if ($nom1=='') { return "Erreur filtre <b>« accord_pluriel »</b> : problème de paramètre"; }
if ($nom2!='') {
$nom2 = " ".$nom2;
$nom2s = $nom2."s";
}
if ($nombre == "0" OR $nombre == "1") {
$texte = $nombre." ".$nom1.$nom2 ;
}
else {
$texte = $nombre." ".$nom1."s".$nom2s ;
}
return $texte ;
}
// FIN du Filtre accord_pluriel
Par exemple :
[il y a (#TOTAL_BOUCLE|accord_pluriel{article}) dans cette rubrique]
Affichera : « il y a 1 un article dans cette rubrique », ou « il y a 49 articles dans cette rubrique ».
et
[il y a (#TOTAL_BOUCLE|accord_pluriel{article,publie}) dans cette rubrique]
Affichera : « il y a 1 un article publié dans cette rubrique », ou « il y a 49 articles publiés dans cette rubrique ».
Discussions par date d’activité
3 discussions
Effectivement tout simple et très utile. Pourquoi ne pas suggérer que cette fonction soit ajoutée dans les prochaines distributions de SPIP ?
Parce qu’il répond de façon simple à un besoin simple et que les situations peuvent être beaucoup plus complexes que de rajouter un « s » (son, ses, ...). Les devs de SPIP sont bien plus malins que moi et veulent le plus souvent se rapprocher de l’universalité de la fonction plutôt que de bidouilles ponctuelles de ce type. Mais c’est impec au cas au par cas.
nouvelle difficulté pour accorder par exemple :
Il y a 1 nouvel article dans cette rubrique depuis 3 jours
Il y a 2 nouveaux articles dans cette rubrique...
où il ne s’agit plus seulement d’ajouter (aux) mais aussi de retrancher le « l »... une solution ?
Répondre à ce message
Si j’avais mieux fouillé, je ne me serais pas cassé la tête à faire mon propre filtre ;-)
Toutefois, le filtre ci-dessous pourrait intéresser :
Il s’appuie sur les fichiers de langue de spip, et permet donc d’internationaliser l’accord du pluriel dans un site SPIP.
Les paramètres à fournir seront donc les codes qu’on utilise aussi sous la forme
<:code:>
exemple :
[(#TOTAL_BOUCLE|pluriel{article})]
renverra selon la valeur de #TOTAL_BOUCLE :$pluriel_renvoie_zero
à false dansecrire/mes_options.php3
[(#TOTAL_BOUCLE|pluriel{article,autre_forme_de_pluriel})]
:surement améliorable.
Répondre à ce message
J’ai trouvé 2 problèmes en voulant utiliser ce filtre ; voilà de quoi il s’agit :
1°) Avec le mot
"Réponse"
(celui que je veux accorder) ça ne passe pas alors que « Réponse » passe. Pas très grave, mais déroutant...2°) Lorsque le nombre est égal à 0, le filtre retourne une chaîne de caractère contenant 0 et non une chaîne vide. J’ai donc réalisé une version qui me convient mieux :
je l’utilise comme ceci pour afficher le nombre de réponses à un article :
Je n’ai pas réussi à utiliser ta proposition de modification du filtre.
Avec celle de la contrib, je fais simplement :
[(#TOTAL_BOUCLE|accord_pluriel{notice, 'trouvée'}) à ce nom]
la virgule permet déjà d’utiliser plusieurs mots contigus (voir plus haut) et les quotes simples de faire passer le html.
J’ai donc bien « 1 notice trouvée » et « 3 notices trouvées ». Pour le cas où il n’y a rien, le tout est déjà dans une sous-boucle qui n’affiche rien s’il n’y a pas de résultats à #TOTAL_BOUCLE.
et boum ! j’ai pas vu que le filtre supprimait le non affichage en cas de résultat nul de #TOTAL_BOUCLE (ça m’a percé mon gazoduc).
Donc j’ai modifié le filtre pour résoudre celà :
Un petit
elseif
en plus.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 :
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.
Suivre les commentaires : |