SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Rédaction > Assistants de rédaction > Archives Assistants de rédaction

Retours à la ligne fidèles à l’article rédigé

mercredi 2 août 2006, par Jujubre. Dernier ajout dimanche 23 septembre 2007



SPIP a un formatage particulier des articles : il ne permet pas d’afficher les sauts de ligne telles qu’ils sont insérés lors de la rédaction de l’article. En effet, un saut de ligne simple ne change rien, un double induit la creation d’un nouveau paragraphe.

L’astuce de SPIP est d’ajouter un _ (tiret bas suivit d’un espace). Pour l’utilisateur lambda, un tel procédé n’est pas pratique, et conduit la majeur du temps à son oubli, et donc à un article completement défiguré.

En rajoutant 3 lignes de code dans ecrire/inc_texte.php3, les sauts de lignes sont retrouvés :)

il suffit de rechercher la ligne

et de remplacer par :

preg_replace("/\n([\w\d])/", "\n<br />\\1", $letexte);
est l’élément clé : il signifie : "remplacer par un saut de ligne html tous les sauts de ligne dont la ligne suivante commence par un caractère alphanumérique"

$letexte = preg_replace("@^ ?<br />@", "", $letexte);
retire le saut de ligne en debut d’article.

Jujubre


Répondre à cet article

  • Retours à la ligne fidèles à l’article rédigé

    5 août 2006 14:21, par Thierry Gagnon

    Merci ! Je me demande s’il serait possible de faire cette intervention sous la forme d’un filtre qui serait appliqué avant |propre ? C’est à essayer...

    Répondre à ce message

    • Retours à la ligne fidèles à l’article rédigé 10 août 2006 23:40, par yannick069

      Bien sûr que tu peux en faire un filtre. Tu as tout ce qu’il faut pour ^^

      Il suffit d’ajouter une fonction dans ton fichier mes_fonctions.php (que tu crées le cas échéant dans ton répertoire squelettes) :

      /*****************************************************************************/
      /* Formate un texte comme dans partie privée (sauts de ligne).
      /*****************************************************************************/
      function sauts_ligne($letexte='') {
       if($letexte) {
         $letexte = trim($letexte);
         $letexte = preg_replace("/\n([\w\d])/", "\n<br />\\1", $letexte);
         $letexte = preg_replace("@^ ?<br />@", "", $letexte);
         $letexte = "\n".$letexte;
         return $letexte;
       } else return('');
      }

      Ensuite dans tes fichiers html tu appelles ton texte à afficher avec ce filtre de cette manière :

      [(#TEXTE*|sauts_ligne|propre)]

      Et voilà le tour est joué ;)

      Yan

      Répondre à ce message

    • Retours à la ligne fidèles à l’article rédigé 31 janvier 2008 15:43, par chryjs

      Il y a beaucoup de points dans ton message. Je vais essayer de répondre au fur et à mesure :

      • "Faut-il créer un plugin ?" : je n’en suis pas sûr mais comme il faut ajouter une tâche comme indiqué au paragraphe 1 , il me semble que cela n’est possible qu’en réalisant un plugin. [1]
      • Pourquoi "montravail" ? Un petit manque au niveau de l’explication de cette doc (que je vais actualiser donc). C’est un nom "générique" que j’ai choisi pour faire cet exemple. On peut l’appeler comme on veut à condition de bien reprendre le même nom dans le nom de la tâche (cf paragraphe 1) ex : tachebidule -> cron_tachebidule / genie_tachebidule .
      • A quoi sert "spip_log..." ? A rien ! C’est juste un exemple de tâche réalisée. En l’occurence j’ai choisi de générer une ligne de log. A toi de programmer (en php) ce que tu veux que la tâche réalise !

      Je prend bonne note de tes remarques et vais faire quelques ajouts pour l’améliorer :)

      Répondre à ce message

    Retour au début des forums

  • Autre astuce sans Forker le core

    9 janvier 2008 14:19, par zerax

    Voici le code qui fonctionne dans mes_fonctions.php :
    je l’ai testé sur SPIP 1.9.2c et c’est cencer foncitonner dans toutes les versions contenant le pipeline pre_typo

    la regexp ne prend pas en compte par exemple si on a 2 raccourcis de liens qui se suivent(aprés un retour a la ligne.

    Bon ya forcement a améliorer la regexp mais ca au moins le mérite de fonctionner...

    function sautligne_pre_typo($texte){
     $texte = trim($texte);
     $texte = preg_replace("@([\w\d])([\n])([\w\d])@S", "$2_ $3", $texte);
     $texte = preg_replace("@^ ?<br />@", "", $texte);

     $texte = "\n".$texte;
     return $texte;
    }

    function ajout_pipelines_perso($texte){
     $spip_pipeline['pre_typo'][]="sautligne_pre_typo";
     return $texte;
    }

    $spip_pipeline['insert_head'][]="ajout_pipelines_perso";

    Répondre à ce message

    Retour au début des forums

  • astuce plus clean pour la 1.92b

    20 août 2007 16:18, par christophe

    modification du noyau : ajouter dans ecrire/inc/texte.php après la ligne 482 les 2 lignes suivantes :

    $letexte = trim($letexte) ; $letexte = post_autobr($letexte) ;

    nb : exploitation de la fct "post_autobr" définie dans ecrire/inc/filtre.php

    permet de résoudre le pb sur le frontoffice comme sur le backoffice

    Répondre à ce message

    Retour au début des forums

  • Retours à la ligne fidèles à l’article rédigé

    13 septembre 2006 12:20, par Jujubre

    J’ai fait un plugin qui evitera d’avoir amodifier le noyau de spip. Ce plugin attend sa v alidation, et je mettrai un lien vers l’article depuis ici.

    Répondre à ce message

    Retour au début des forums

  • Retour au début des forums

  • Retours à la ligne fidèles à l’article rédigé

    12 août 2006 01:44, par fulvio

    vraiment utile, merci ! Ca évite de mettre des br pour forcer le retour... comprends pas pourquoi il n’y avait rien à ce propos avant.

    Répondre à ce message

    Retour au début des forums



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net