Filtre « titre_homogene »

Suite à une contrib. touvée sur ce site pour homogénéiser les titres des articles ou rubriques que j’ai installé et testé mais qui fonctionnait partiellement et buggait dans certains cas, j’ai dû demander à un ami de me concocter un nouveau filtre titre_homogene qui permet de :

-  couper mes titres à un certains nombres de caractères sans couper le titre en plein milieu d’un mot.
-  mettre les titres en minuscules avec la 1ère lettre en majuscule même s’ils ont été écrit en majuscule.

Il fonctionne parfaitement, contrairement à celui de la contrib originale : « Homogénéiser les titres »

Pourquoi un tel filtre ? :

J’utilise la 1.7.0 c’est pourquoi j’ai besoin d’un tel filtre car le filtre couper ne fonctionne pas bien sur cette version.

Le code

Voici le code à ajouter dans votre fichier mes_fonctions.php3.

/*
 *   +----------------------------------+
 *    Nom du Filtre : titre_homogene   
 *   +----------------------------------+
 *    Date : mercredi 31 juillet 2004
 *    Auteur :  Paul S.+ Lilian B. 
 *    Mail : killer.27 AT laposte POINT net
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *   
 *    - limite la longueur des titres à 20 caractères,
 *    - ne coupe pas les titres en plein milieu d'un mot 
 *    - force les titres écrits en majuscules en
 *      minuscules et 
 *    - met la 1ère lettre  du titre en  majuscule
 *   +-------------------------------------+
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://www.spip-contrib.net/article.php3?id_article=640
 */

//début filtre titre_homogène

function titre_homogene($titre) {
  $limite=20;
  $titre = strtolower($titre);
  $titre = ucfirst($titre);
  
  $pos = strrpos($titre, " ");
  if ($pos === false)
  {
  	if (strlen($titre) > $limite)
	{
	 $titre = substr($titre, 0, $limite);
	 return $titre." ...";
	}
	else return $titre;
  }
  else
  {	
   	if (strlen($titre) <= $limite) return $titre;  
   	else 
	 {
	 $titre = substr($titre, 0, $limite);
	 $pos = strrpos($titre, " ");
	  if ($pos === false)
	  {
	  return $titre." ...";
	  }
	  else
	  {
	  return substr($titre, 0,$pos)." ...";
	  }
	 }
   }
}
//fin filtre titre_homogène

Quelques explications

Dans le code ci-dessus :

$limite=20 ; détermine à combien de caractères, il faut couper le titre. Modifier 20 par le nombres de caractères souhaités.

Si les points de suspensions " ..." à la fin du titre ne vous plaisent pas, vous pouvez les modifier entre les guillemets dans le code ci-dessus aux 3 endroits.

Ce filtre fait donc bien 5 choses :

-  limite la longueur des titres à 20 caractères,
-  ne coupe pas les titres en plein milieu d’un mot,
-  force les titres écrits en majuscules en
minuscules et
-  met la 1re lettre du titre en majuscule,
-  coupe arbitrairement le titre si le premier mot dépasse la taille souhaité (par exemple Mon_titre_Spip_à_rallonge devient Mon_titre_Spip_à_ral,).

Comment utiliser ce filtre ?

Comme tous les filtres : (#TITRE.

Pour le filtre « titre_homogene », ce sera (#TITRE.

Où écrire ce filtre ?

SPIP met à votre disposition un fichier mes_fonctions.php3, vide à l’origine et destiné à recevoir tous vos filtres.

Si votre fichier est vide, recopier les balises ci-dessous et mettez le code ci-dessus entre ces balises :

<?php

Insérez ici le code

?>

Les admins de ce site ne conseille pas d’utiliser ce script, ils préférent que vous formiez vos rédacteurs à écrire des titres courts, ce que je comprend. Par contre, cette contrib est utile quand la formation de nombreux rédacteurs n’est pas possible.

De plus si vous utilisez la dernière version de spip 1.7.2 dont le filtre couper fonctionne bien mieux que celui de la 1.7.0, cette contrib ne vous concerne pas.

Discussion

Aucune discussion

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