Voici le filtre qui ne coupe que le texte
// tronque un titre à 60 caractères, sans coupure de mot
function tronquer_titre($texte) {
return couper_texte($texte, 60);
}
// coupe une chaîne à $limite caractères, sans coupure de mot
// (un mot est considéré comme un groupe de caractères séparé par des
espaces)
function couper_texte($texte, $limite) {
// la longueur du texte est <= $limite, on retourne le texte entier
if (strlen($texte) <= $limite) return $texte;
// on fait la coupure avant le 1e espace après $limite caractères
$texte = nl2br($texte);
$pos = strpos(substr($texte, $limite), " ");
// s'il y a un espace après $limite caractères ou juste après $limite
caractères
// on retourne la partie de $texte jusqu'avant cet espace
if (is_integer($pos) && $pos) return substr($texte, 0, $limite+$pos) . "
(...)";
// sinon (pas d'espace après $limite caractères ou juste après $limite
caractères) on retourne le texte
else return $texte;
}
Il suffit simplement de changer 60 par 500 dans tronquer_titre(). Et
éventuellement changer "(...)" par ce que tu veux dans couper_texte()
Ce filtre est compatible v1.3. Evidemment avec les versions suivantes tu
peux utiliser un filtre avec variables.
Bernard Martin-Rabaud
martinrabo@wanadoo.fr
-----Message d'origine-----
De : spip-bounces@rezo.net [mailto:spip-bounces@rezo.net]De la part de
Patrick Moisan
Envoyé : lundi 20 janvier 2003 03:45
À : spip@rezo.net
Objet : [Spip] Filtre spécial : tronquer le texte
Bonjour à tous les bidouilleurs SPIP 
J'ai fait la lecture de toute la documentation et j'ai fouillé un peu
partout afin de pouvoir trouver une réponse à ma question, mais sans
succès. S'il y a une façon simple de faire ce que je vais décrire dans
le paragraphe suivant, super. Je serai très heureux de la connaître,
car elle m'a échappée jusqu'à maintenant. Sinon, je crois avoir des
pistes de réponse, mais mes connaissances en programmation PHP sont en
ce moment encore trop limitée pour que je solutionne le tout seul.
J'aimerais créer un nouveau filtre à inclure dans mon fichier
mes_fonctions.php3 . Ce nouveau filtre, nommé par exemple «
|texte_tronque », aura pour but de:
1- tronquer le texte d'un article à 500 caractères (sans coupure de
mot, donc ça peut dépasser un peu cette limite) ;
2- si le texte comporte moins de 500 caractères alors, il l'affiche au
complet ;
3- si le texte comporte plus de 500 caractères, alors il affiche les
500 premiers caractères (ou un peu plus pour ne pas qu'il y ait une
coupure de mot) et place après le texte la mention [Lire la suite] avec
un vers l'article complet (i.e. #URL_ARTICLE). En bref, c'est un
avant-goût de l'article, mais sans devoir écrire un descriptif pour
l'article.
J'ai bien tenté de me baser sur le filtre servant à «Homogénéiser les
titres» disponible sur Spip-Contrib :
http://www.uzine.net/spip_contrib/article.php3?id_article=46
Par contre, je ne sais pas comment l'adapter adéquatement pour ce que
je veux faire... Il me semble que toute la première partie de ce code
est presque exactement (au nombre de caractères près) ce qu'il faut
faire en 1. C'est pour la nuance en 2 et 3 que je suis un peu plus
N.b. Encore plus fou, est-il possible d'ajouter une variable dans un
filtre? Dans le genre, |texte_tronque_xyz où xyz désignerait le nombre
de caractères à conserver. Il serait alors pensable de varier
l'utilisation du filtre selon nos besoins particuliers sans retoucher
le contenu du fichier mes_fonctions.php3.
Merci de faire travailler vos neurones sur ce « petit (?) » défi.
Patrick Moisan
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.uzine.net/spip