SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 38 visiteurs en ce moment

Accueil du site > Rédaction > Archives Rédaction > Filtres Mise en page pour avant SPIP 1.9 > Filtre « titre_homogene »

Filtre « titre_homogene »

29 novembre 2004 – par Paul Sanches – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

Toutes les versions de cet article : [français] [français]

1 vote

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.

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 1ère 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

?>

P.-S.

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.

Retour en haut de la page

Vos commentaires

  • Le 5 septembre 2005 à 13:29, par lionel En réponse à : > Filtre « titre_homogene »

    Je crois avoir trouvé plus simple pour tronquer proprement les objets ( TITRE, TEXTE, etc...) de SPIP :

    function couperclean($chaine,$limite='30',$separateur=' ',$ext=' ...') {

            $position=strlen($chaine);
            $tail='';
            while ($position>$limite) {
                    $position=strrpos($chaine,$separateur);
                    $chaine=substr($chaine,0,$position);
                    $tail=$ext;
            }
    return $chaine.$tail;
    }

    A placer dans « mes_fonctions.php » et à appeler avec :

    [(#TITRE|couperclean)]

    Par défaut, la chaine est tronquée au dernier ESPACE avant le 30ème caractère et se voit ajouter l’extension « ... » à la fin. Vous pouvez bien sûr modifier ce comportement de manière générique en ajustant les paramètres par défaut déclaré en entrée de la fonction ou encore unitairement en spécifiant, dans vos squelettes, chacun des paramètres de la façon suivante ( depuis SPIP 1.5) :

    [(#TITRE|couperclean{18,'/',' > lire la suite ...'})]

    afin de tronquer la chaine au dernier SLASH avant le 18ème caractère et lui ajouter l’extension « > lire la suite ... ».

    A noter que :
    -  l’extension n’est ajoutée que si l’objet est effectivement tronqué.
    -  si le séparateur ne figure pas dans la limite de la chaine, seule l’extension est retournée.
    -  J’ai des erreurs PHP si l’extension contient des parenthèses.

    Retour d’info bienvenu !

    • Le 5 septembre 2005 à 14:26, par lionel En réponse à : > Filtre « titre_homogene »

      Je viens de modifier la fonction après m’être rendu compte que l’utilisation de ce filtre sur des textes assez long pouvait prendre un peu de temps (boucle While). Je prédécoupe donc l’objet à la taille maximum et recherche le prochain séparateur à l’aide d’un simple « if ». La fonction devient alors :

      function couperclean($chaine,$limite='30',$separateur=' ',$ext=' ...') {
              $chaine=substr($chaine,0,$limite);
              $position=strlen($chaine)+1;
              $tail='';
              if ($position>$limite) {
                      $position=strrpos($chaine,$separateur);
                      $chaine=substr($chaine,0,$position);
                      $tail=$ext;
              }
              return $chaine.$tail;
      }

      Oui, ca fait une ligne de plus ...

    • Le 11 août 2006 à 13:59, par mumuri En réponse à : > Filtre « titre_homogene »

      Personnellement j’ai du utiliser un filtre pour couper les titres trop long.

      Dans le titre, je mets un caractére séparateur ( | par exemple)

      Ensuite j’applique le filtre couperclean cité plus haut (en simplifié)
      encore plus simple

      function couperclean($chaine,$separateur=’|’,$ext=’ ...’)
      $position=strrpos($chaine,$separateur) ;
      $chaine=substr($chaine,0,$position) ;
      $tail=$ext ;

      return $chaine.$tail ;

      Et pour afficher les titres

      function affclean($chaine,$separateur=’|’)
      $chaine = str_replace($separateur,"",$chaine) ;

      return $chaine ;

      Mumuri

    • Le 11 août 2006 à 14:32, par mumuri En réponse à : > Filtre « titre_homogene »

      function couperclean($chaine,$separateur=' ',$ext=' ...') {
       $position=strrpos($chaine,$separateur);
      if ($position !== false) {

            $chaine=substr($chaine,0,$position);
            $tail=$ext;
      }

      return $chaine.$tail;
      }

      function affclean($chaine,$separateur="|")
      {
      $chaine = str_replace($separateur,"",$chaine) ;
      return $chaine ;
      }

      excusez moi pour la mise en page et la petite erreur dans le code

    • Le 11 août 2006 à 17:20, par mumuri En réponse à : > Filtre « titre_homogene »

      Bon encore une amélioration, j’avais les titres suivant, et je voulais les simplifier

      Quel budget pour démarrer ? -> Budget pour démarrer ?
      Soyez clair et précis sur vos ordres de Bourse ->  Vos ordres de Bourse
      Comment passer ses ordres ? -> Passer ses ordres ?
      Quelques pièges à éviter quand on démarre -> Pièges à éviter

      Pour cela j’ai rajouté des caractéres de séparation « | »

      Quelques |pièges à éviter| quand on démarre
      Quel |budget pour démarrer ?|
      Soyez clair et précis sur |vos ordres de Bourse|
      Comment |passer ses ordres| ?
      Quelques |pièges à éviter| quand on démarre

      Ensuite, dans mes_fonctions.php3 j’ai rajouté les fonctions suivantes

      // Nom : couperClean
      // Fonction : avoir des titres raccourcis manuellement
      // auteur : Mumuri
      function couperclean($chaine,$separateur=' ',$ext=' ...') {

       $tailleChaine = strlen($chaine);
       $positionFin=strrpos($chaine,$separateur);
       if ( $positionFin === false) {$positionFin= $tailleChaine;   }

       $positionDeb = strpos($chaine,$separateur);
       if ( $positionDeb === false || $positionDeb == $positionFin)
       {
           $positionDeb=0;
       }
       else
       {
           $positionDeb++;
       }

       if ($positionFin !=$tailleChaine || $positionDeb !=0) // Si on doit couper ...
       {   // ... on coupe
           $chaine=ucfirst(substr($chaine,$positionDeb,$positionFin-$positionDeb));
       }

       $tail=$ext;

      return $chaine.$tail;
      }

      // Nom :affClean
      // Fonction : filtrer un caractére dans le titre
      // auteur : Mumuri
      function affclean($chaine,$separateur="|")
      {
      $chaine = str_replace($separateur,"",$chaine) ;
      return $chaine ;
      }

      Ensuite dans le squelette du menu pour couper les titres, j’ai mis
      [(#TITRE|supprimer_numero|couperclean{'|',''})]

      et pour ne pas afficher les caractéres de séparation, partout ou il y en avait [<h2><strong>&gt;&gt;</strong>(#TITRE|supprimer_numero|affclean{'|'})</h2>]

      et ne pas oublier la balise « titre »
      <title>[(#TITRE|supprimer_numero|affclean{'|'})]</title>

      et le plan du site <li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero|affclean{'|'})]</a></li>

      Voila (peut être que j’ai oublié certains endroits pour les titres à afficher )

      A plus

    Répondre à ce message

  • Le 16 mars 2005 à 08:13, par André Vincent En réponse à : > Filtre « titre_homogene »

    On peut aussi obtenir le même résultat par feuilles de styles :

    h1 { text-transform: lowercase; }
    h1:first-letter { text-transform: capitalize; }
    • Le 16 mars 2005 à 16:50, par Paul Sanches En réponse à : > > Filtre « titre_homogene »

      As-tu lu la contrib et son usage ? ce que tu dis n’est pas faux mais est innaproprié pour cette contrib.

    Répondre à ce message

  • Le 9 décembre 2004 à 23:55, par marabbeh En réponse à : > Filtre « titre_homogene »

    La contrib, à laquelle fait 2 fois référence l’auteur pour dire qu’elle ne fonctionne pas, avait été faite sur un site sous SPIP 1.4. Le filtre « couper » n’existait alors pas et cette contrib ne prenait pas en compte les balises HTML, parce que c’est rare que les titres en comprennent. Malgré tout le filtre fonctionne depuis des années sans problème sur ce site.

    • Le 14 décembre 2004 à 12:37, par Paul Sanches En réponse à : > Filtre « titre_homogene »

      Ok je comprend mieux pourquoi cela ne fonctionnait pas pour moi, je m’excuse alors pour avoir critiqué cette contrib. Je vais essayé de faire modifier le texte de la contrib. par un admin.

      Merci.

    • Le 14 décembre 2004 à 23:04, par DoriaN En réponse à : > Filtre « titre_homogene »

      salut, étant un peu responsable de la publication de cet contrib j’attends vos remarques (dans l’espace privé) afin de remanier la contrib si nécessaire. (ps : ça ne se voit pas encore mais on va ajouter les liens de traductions ainsi que des liens « article de référence » pour ces contribs qui ont plusieurs versions)

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)