Filtre « titre_homogene » - commentaires> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2006-08-11T15:20:16Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3869972006-08-11T15:20:16Z<p>Bon encore une amélioration, j'avais les titres suivant, et je voulais les simplifier</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code> 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</code></pre></div>
<p>Pour cela j'ai rajouté des caractéres de séparation « | »</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>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</code></pre></div>
<p>Ensuite, dans mes_fonctions.php3 j'ai rajouté les fonctions suivantes</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>// 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 ;
}</code></pre></div>
<p>Ensuite dans le squelette du menu pour couper les titres, j'ai mis<br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr">[(#TITRE|supprimer_numero|couperclean{'|',''})]</code></p>
<p>et pour ne pas afficher les caractéres de séparation, partout ou il y en avait<br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr">[<h2><strong>>></strong>(#TITRE|supprimer_numero|affclean{'|'})</h2>]</code></p>
<p>et ne pas oublier la balise « titre »<br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr"><title>[(#TITRE|supprimer_numero|affclean{'|'})]</title></code></p>
<p>et le plan du site<br class="autobr">
<code class="spip_code spip_code_inline" dir="ltr"><li><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero|affclean{'|'})]</a></li></code></p>
<p>Voila (peut être que j'ai oublié certains endroits pour les titres à afficher )</p>
<p>A plus</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2006-08-11T12:32:03Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3869922006-08-11T12:32:03Z<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function couperclean($chaine,$separateur=' ',$ext=' ...') { $position=strrpos($chaine,$separateur);
if ($position !== false) { $chaine=substr($chaine,0,$position); $tail=$ext; } return $chaine.$tail;
}</code></pre></div><hr class="spip"><div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function affclean($chaine,$separateur="|")
{ $chaine = str_replace($separateur,"",$chaine) ;
return $chaine ;
}</code></pre></div>
<p>excusez moi pour la mise en page et la petite erreur dans le code</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2006-08-11T11:59:06Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3869892006-08-11T11:59:06Z<p>Personnellement j'ai du utiliser un filtre pour couper les titres trop long.</p>
<p>Dans le titre, je mets un caractére séparateur ( | par exemple)</p>
<p>Ensuite j'applique le filtre couperclean cité plus haut (en simplifié)<br class="autobr">
encore plus simple</p>
<blockquote class="spip">
<p>function couperclean($chaine,$separateur='|',$ext=' ...') <i><br class="autobr"> $position=strrpos($chaine,$separateur)<small class="fine d-inline"> </small>;<br class="autobr"> $chaine=substr($chaine,0,$position)<small class="fine d-inline"> </small>;<br class="autobr"> $tail=$ext<small class="fine d-inline"> </small>;</i></p>
<p>return $chaine.$tail<small class="fine d-inline"> </small>;<br class="autobr">
</p>
</blockquote>
<p>Et pour afficher les titres</p>
<blockquote class="spip">
<p>function affclean($chaine,$separateur='|') <i><br class="autobr"> $chaine = str_replace($separateur,«<small class="fine d-inline"> </small>»,$chaine)<small class="fine d-inline"> </small>;</i></p>
<p>return $chaine<small class="fine d-inline"> </small>;<br class="autobr">
</p>
</blockquote>
<p>Mumuri</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2005-09-05T12:26:14Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3832932005-09-05T12:26:14Z<p>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 :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>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;
}</code></pre></div>
<p>Oui, ca fait une ligne de plus ...</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2005-09-05T11:29:24Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3832912005-09-05T11:29:24Z<p>Je crois avoir trouvé plus simple pour tronquer proprement les objets ( TITRE, TEXTE, etc...) de SPIP :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>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;
}</code></pre></div>
<p>A placer dans « mes_fonctions.php » et à appeler avec :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#TITRE|couperclean)]</code></pre></div>
<p>Par défaut, la chaine est tronquée au dernier ESPACE avant le 30<sup class="typo_exposants">e</sup> 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) :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#TITRE|couperclean{18,'/',' > lire la suite ...'})]</code></pre></div>
<p>afin de tronquer la chaine au dernier SLASH avant le 18<sup class="typo_exposants">e</sup> caractère et lui ajouter l'extension « > lire la suite ... ».</p>
<p>A noter que :
<br>- l'extension n'est ajoutée que si l'objet est effectivement tronqué.
<br>- si le séparateur ne figure pas dans la limite de la chaine, seule l'extension est retournée.
<br>- J'ai des erreurs PHP si l'extension contient des parenthèses.</p>
<p>Retour d'info bienvenu<small class="fine d-inline"> </small>!</p>> > Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2005-03-16T15:50:19Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3796792005-03-16T15:50:19Z<p>As-tu lu la contrib et son usage<small class="fine d-inline"> </small>? ce que tu dis n'est pas faux mais est innaproprié pour cette contrib.</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2005-03-16T07:13:25Zhttps://contrib.spip.net/Filtre-titre-homogene#comment3796572005-03-16T07:13:25Z<p>On peut aussi obtenir le même résultat par feuilles de styles :</p>
<div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>h1 { text-transform: lowercase; }
h1:first-letter { text-transform: capitalize; }</code></pre></div>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2004-12-14T22:04:18Zhttps://contrib.spip.net/Filtre-titre-homogene#comment2589882004-12-14T22:04:18Z<p>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)</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2004-12-14T11:37:34Zhttps://contrib.spip.net/Filtre-titre-homogene#comment2528592004-12-14T11:37:34Z<p>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.</p>
<p>Merci.</p>> Filtre «<small class="fine d-inline"> </small>titre_homogene<small class="fine d-inline"> </small>»2004-12-09T22:55:10Zhttps://contrib.spip.net/Filtre-titre-homogene#comment2395882004-12-09T22:55:10Z<p>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.</p>