Re: #INTRODUCTION en gardant la mise en forme
Marc VALLETEAU de MOULLIAC <mvm <at> assfor.com>
2006-10-01 08:33:16 GMT
Bonjour, je trouve cet échange ce matin ... et, pour ma part, ayant
le même problème, j'ai mis en place une solution qui tourne très bien
(pour le moment, mais j'ai des "perfectionnements" à apporter ...) et
qui est une alternative au filtre 'couper' qui, effectivement,
supprime tout le formatage du texte.
Voilà, j'explique (je me suis inspiré d'une "vieille" contrib mais ne
sais plus laquelle, que son auteur soit remercié) :
J'ai mis le code du filtre suivant dans mes_options.php du répertoire
squelettes :
//---------------- PERMET D'AFFICHER UN TEXTE COUPE MAIS FORMATE
----------------------
// 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 resumer($texte,$limite,$url,$suite) { //$url pour mettre
celle que l'on veut (y compris un autre site, $suite pour le texte
qui s'affiche en fin de texte
if (strlen($texte) <= $limite) return $texte; // la longueur du texte
est <= $limite, on retourne le texte entier
//$texte = nl2br($texte); on fait la coupure avant le 1e espace
après $limite caractères
$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) . " (...)"." <b><font color='red'>>></b> <i><a
href=\"$url\">".$suite."</a></i></font>";
// sinon (pas d'espace après $limite caractères ou juste après
$limite caractères) on retourne le texte
else return $texte;
}
Vous voyez qu'il y a du code html pour formater le texte de $suite :
je voudrais compléter mes arguments pour mettre ce que je veux
directement dans ma page ...
Ensuite, dans ma boucle, je passe ce qui suit (par exemple) :
(#TEXTE|resumer{1500,#URL_ARTICLE,Lire la suite}|justifier)
Le 'justifier' est un autre filtre, naturellement ...
Il vaut mieux mettre le filtre resumer en premier si d'autres
filtres, et le 'Lire la suite' apparaitra à la suite du texte.
Un exemple ici (éditorial de la page d'accueil) : http://
www.assfor.com
Voilà, si cela peut servir ...
A+
Marc
Le 29 sept. 06 à 21:40, Andre Vincent a écrit :
>
>
>
>>>> Je voudrais conserver le formattage dans le texte généré par
>>>> #INTRODUCTION. Il me semble avoir vu un site comme ça mais je ne
>>>> retrouve plus le site. Est-ce que c'est possible et si oui comment?
>>>>
>>>
>>> Moi, j'ai remplacé #INTRODUCTION par :
>>> [(#DESCRIPTIF|sinon{[(#CHAPO|sinon{#TEXTE}|couper{300})]})]
>>
>> http://www.spip.net/fr_article902.html:
>> #INTRODUCTION : [SPIP 1.4] affiche le descriptif de l'article, sinon
>> affiche les 600 premiers caractères du début de l'article (chapeau
>> puis texte). [SPIP 1.3] Dans les versions précédentes de SPIP, ce
>> sont
>> systématiquement les premiers caractères de l'article (chapeau puis
>> texte) qui sont pris en compte (le descriptif n'est pas utilisé).
>>
>> On peut mettre en forme dans le descriptif, non?
>
> Oui... S'il y a un descriptif. Le problème, c'est qu'en l'absence de
> #DESCRIPTIF, #INTRODUCTION applique un filtrage de type "texte_brut" à
> #CHAPO + #TEXTE et élimine ainsi tout formatage (gras, italique,
> puces,
> listes, tableaux, etc...).
>
> De là, la boucle que j'utilise qui retient le formatage de chacun.
> De plus,
> s'il n'y a pas de #DESCRIPTIF, la boucle utilise seulement le
> #CHAPO, sinon,
> seulement le #TEXTE.