Déparagrapher un texte SPIP

© Christian PAULUS. Document créé le 1er février 2012 , mis à jour le 8 février 2012.

Pour un esprit équilibré, la mort n'est qu'une grande aventure de plus. Joanne Rowling

Accueil du site > Astuces > SPIP > Déparagrapher un texte SPIP

Filtre / SPIP 2.1.12

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 filtrer pour annuler l’élément paragraphe

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 ($texte03) == '<p>')
    {
        
$texte substr ($texte3);
        if (
substr ($texte, -4) == '</p>')
        {
            
$texte substr ($texte0strlen ($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>

Plussoyez !

Les forums sont fermés.

  • Déparagrapher un texte SPIP 21 avril 2012 21:56, par .Gilles

    Bonjour,

    pourquoi ne pas utiliser plutôt le filtre |ptoBR ?
    http://www.spip.net/fr_article4308....

    Les forums sont fermés.

    • Déparagrapher un texte SPIP 22 avril 2012 09:41, par Christian PAULUS
      Oui, pourquoi pas. Mais si le descriptif est absent, il y a retour à la ligne par le break, et ligne vide.

      Les forums sont fermés.

  • Déparagrapher un texte SPIP 22 avril 2012 17:10, par ValGux

    Essayez Google, avec la requête « paragraphes+SPIP », ce sera plus simple, non ?

    Pour préciser : ce n’est pas la balise #DESCRIPTIF qui est encapsulée dans un élément p, mais chaque paragraphe. Lorsque vous saisissez deux paragraphes dans le champ descriptif, chacun est correctement balisé d’un p. Si vous n’en saisissez qu’un, vous n’avez qu’un p. Logique :)

    Il existe plusieurs façons de virer ces paragraphes, notamment exposées dans l’article « SPIP paragraphe tout désormais », dont le super filtre |PtoBR.

    Mais la question est : que vouliez-vous faire ? Si c’est pour remplir la meta description, le filtre |attribut_html suffit, comme suit :

    Les forums sont fermés.