©
. Document créé le 1er février 2012 , mis à jour le 8 février 2012.En cas de morsure de vipère, sucez-vous le genou, ça fait marrer les écureuils. Pierre Desproges
Accueil du site > Astuces > SPIP > Déparagrapher un texte SPIP
SPIP enveloppe la balise #DESCRIPTIF de l’élément HTML p (paragraphe : <p> et </p>), ce qui est parfois gênant.
Imaginons par exemple une liste d’articles, dont chaque élément de liste est composé du titre de l’article et de son descriptif rapide. La boucle SPIP ressemblera à :
<ul>
<BOUCLEn(ARTICLES){critères...}>
<li> #TITRE[. (#DESCRIPTIF)] </li>
</BOUCLEn>
</ul>
donnera une liste dont chaque élément présentera le titre sur une ligne et son descriptif sur une autre.
Pour mettre l’ensemble sur la même ligne, vous pouvez forcer le bloc p qui se trouve dans l’élément de liste via CSS
ul li p { display:inline }
soit utiliser un filtre pour retirer le premier <p> et le dernier </p> de l’objet DESCRIPTIF.
Un petit filtre à recopier dans le fichier mes_fonctions.php qui se trouve dans votre dossier de squelettes.
<?php
/**
* Retirer les elements paragraphes d'un texte
* @author Christian Paulus
* @version 20120201
*/
function deparagrapher ($texte)
{
$texte = trim ($texte);
if (substr ($texte, 0, 3) == '<p>')
{
$texte = substr ($texte, 3);
if (substr ($texte, -4) == '</p>')
{
$texte = substr ($texte, 0, strlen ($texte) - 4);
}
}
return ($texte);
}
?>
Et son utilisation dans la boucle appelée :
<ul>
<BOUCLEn(ARTICLES){critères...}>
<li> #TITRE[. (#DESCRIPTIF|deparagrapher)] </li>
</BOUCLEn>
</ul>
Autre exemple, avec césure à environ 180 caractères :
<ul>
<BOUCLEn(ARTICLES){critères...}>
<li> #TITRE[. (#DESCRIPTIF|deparagrapher|couper{180})] </li>
</BOUCLEn>
</ul>
Les forums sont fermés.