©
. Document créé le 27 octobre 2007 , mis à jour le 27 octobre 2007.L'idéal quand on veut être admiré, c'est d'être mort. Michel Audiard
Accueil du site > Astuces > SPIP > Filtre à couper le texte
Le filtre SPIP couper permet d’extraire une partie du texte. Par défaut, la longueur de cette extraction est de 50 caractères. Si le texte dépasse cette longueur, les 50 premiers caractères (environ, car couper tient compte des mots) sont retournés, agrémentés d’un (…) pour signifier au lecteur qu’il s’agit ici d’un extrait du texte.
Pour en savoir plus sur le filtre couper, lire la page des filtres sur spip.net.
Le besoin : transformer ce (…) en « Lire la suite de ce texte » - ou quelque chose du genre – en y proposant un lien sur l’article.
Au plus simple : utiliser le filtre couper en tant que fonction dans un nouveau filtre.
La fonction couper_suite() :
<?php
function couper_suite($texte, $id_article, $url, $titre, $taille=50) {
$texte = couper($texte, $taille);
$pattern = "\(\.\.\.\)";
if(preg_match("'".$pattern."$'", $texte)) {
$texte = ""
. preg_replace("'".$pattern."$'", "", $texte)
. "<a class='lire-suite' title='" . _T('Lire_la_suite_de_') . $titre
. "' href='$url#texte_$id_article'>•••"
. _T('Lire_la_suite')."</a>\n";
}
return($texte);
}
?>
Copiez cette fonction et collez-là dans votre script mes_fonctions.php.
Dans la foulée, apportez votre traduction dans le script local_fr.php (pour la version française), local_en.php (pour la version anglaise), etc.
Voici un extrait pour local_fr.php :
<?php
$GLOBALS[$GLOBALS['idx_lang']] = array(
'Lire_la_suite' => "<span>suite</span>"
, 'Lire_la_suite_de_' => "Lire la suite de l´article "
);
?>
Finalisez l’installation de ce filtre par quelques feuilles de style à placer dans votre fichier css :
<style type="text/css">
<!--
a.lire-suite {
font-size: 90%;
font-style: italic;
font-weight: bold;
color:red;
}
a.lire-suite span {
padding-left:0.5ex;
color: #999933;
}
-->
</style>
Il ne reste plus qu’à mettre en œuvre le filtre couper_suite dans vos squelettes. Par exemple :
<div class="texte">[(#TEXTE|couper_suite{#ID_ARTICLE, #URL_ARTICLE, [(#TITRE)], 150})]</div>
Ici, le texte sera coupé à environ son 150ème caractère, le petit lien en fin d’extrait permettra au lecteur d’appeler la page de l’article concerné.
Touche finale : placez l’ancre dans votre squelette d’article, juste avant le traitement du texte de cet article :
<a name="texte_#ID_ARTICLE" id="texte_#ID_ARTICLE"></a>
[<div class="texte">(#TEXTE)</div>]
Les forums sont fermés.