Sauts de lignes (Créer un compte)

  • Statut : non résolu
11 sujets de 1 à 11 (sur un total de 11)
  • Auteur
    Messages
  • #449353
    quentin
    Membre
    Chevalier WordPress
    315 contributions

    Bon je tente ma chance ici, dépité de l’échec de recherches sur les sites anglophones WP et WPMU. Je ne suis pas da’illeurs bien sur de s’il s’agit d’un problème MU, WP ou les deux. (n’hésitez pas à déplacer ce topic en cas de confirmation que c’est un problème WP).

    Quelqu’un a-t-il réussi à trouver ce qu’il fallait faire pour pouvoir inclure 2 sauts de lignes consécutifs dans un article ??

    Il semble qu’il y ait 2 problèmes superposés liés à WP et à tinyMCE.

    D’abord, il semble que les articles, meme s’ils apparaissent dans la base de donnée avec des retours chariots visibles par phpmyadmin, ne sont jamais rendus avec le nombre de sauts de lignes correspondants dans le blog. J’ai ainsi des articles qui ont beaucoup de retour chariot consécutifs dans l’article tel que sauvé dans la base de données, mais qui ont tous disparus (sauf 1) à l’affichage.

    En passant à une version plus récente de tinyMCE, je me suis rendu compte qu’il ajoutait désormais un espace quand on sautait une ligne. Je me suis dit que c’était peut etre justement afin que ces lignes ne se fassent pas supprimer au rendu, mais en fait rien n’y fait. Peut etre ceci n’est qu’un problème de tinymce, mais j’ai l’impression d’avoir essayé toutes les configs possibles sans succès…

    Accessoirement, le comportement est différent selon si on fait enter ou shift + enter, dans le premier cas il semble insérer un nouveau paragraphe dans l’éditeur, mais si on en fait plusieurs tous les supplémentaires sont effacés par tinyMCE (on le voit car ils disparaissent simplement si on regarde le source HTML). Dans le second cas les sauts de ligne arrivent jusque dans la base de données, mais ne sont jamais rendus à l’écran par WP.

    Bref, je m’arrache les cheveux, alors la moindre aide est bienvenue 🙂.

    #584506
    Remi-L
    Membre
    Initié WordPress
    16 contributions

    A moi aussi, cette histoire du double saut de ligne me semble surréaliste.
    Le problème existe aussi sous WordPress normal.

    Sur le WordPress-Mu du Monde, voilà ce que j’ai remarqué :

    – si je fais des sauts de lignes simples (

    ), ils sautent dès que l’on fait sauvegarder
    – si je fais des sauts de lignes sur un paragraphe avec une classe (

    ), ils survivent à la fois dans les données sauvegardées et apparaissent correctement à l’affichage.
    – les doubles-BR sont dans tous les cas remplacés par un saut de paragraphe, qu’on leur colle une classe ou pas. On peut en mettre 10 de suite, ils ne feront qu’un saut de paragraphe.

    Dans le WordPress normal (2.0.5 avec le TinyMCE d’origine, sans plugin pour ne pas interférer), c’est exactement pareil.
    Je n’ai pas eu vraiment le temps de regarder longuement le code du WordPress normal, mais j’ai commencé à osculter TinyMCE pour m’orienter ensuite vers wp-includes/kses.php et à mon avis le problème serait plutôt là-dedans, car on a là plein de routines qui font du nettoyage. Le fait de supprimer les paragraphes vides est peut-être un phénomène induit. A mon avis, il faut plutôt chercher l’endroit qui transforme les double-BR en saut de paragraphe (ce n’est pas facile car les
    sont transformés très tôt en n …). Je n’ai pas regardé comment sont stockés les sauts de paragraphe, la tuile serait qu’ils soient stockés en double n !

    Mais comme toi, ce qui me sidère, c’est que personne ne mentionne ce problème.
    Personne n’appuie 2 fois sur la touche Return ?! 🙂))

    #584507
    Remi-L
    Membre
    Initié WordPress
    16 contributions

    Je viens de regarder le stockage car cela m’étonnait que tu dises qu’ils sont stockés dans la BDD… et tu as raison, ils sont stockés,

    et
    , ces derniers étant sous la forme de simples n (sauf si on leur colle une classe).

    Donc le problème serait plutôt dans le module qui va extraire les données avant de les afficher, ce qui innocenterait TinyMCE.

    Mais là, j’ai une légère différence entre WP 2.0.5 et WP-MU :
    – Sur mon blog LeMonde.fr, si je fais une suite de paragraphes vides avec une classe, il me met   à la place de l’espace et tout est correctement conservé.
    – Sur un simple WP 2.0.5, il ne transforme pas l’espace d’un paragraphe vide en   et à l’affichage il supprime les

    (alors qu’ils sont dans la BDD), ce qui laisse une suite de

    ouvertes. Donc, là y’a bug de toutes façons.

    Bon, mais il faudrait plutôt chercher dans les routines qui vont extraire les posts. Ce seraient elles qui font une opération « Tout doit disparaître… ».

    #584508
    quentin
    Membre
    Chevalier WordPress
    315 contributions

    functions-formatting.php, wp-autop:

    $pee = preg_replace(« /nn+/ », « nn », $pee); // take care of duplicates
    $pee = preg_replace(‘/n?(.+?)(?:ns*n|z)/s’, « 

    $1

    n », $pee); // make paragraphs, including one at the end

    Je crois que ce sont les coupables.
    La premiere enleve plusieurs n , la seconde concatene les choses en des groupes de 1 paragraphe. Juste supprimer la premiere ne résout pas le probleme. Il faut vraisemblablement supprimer la premiere et modifier la 2eme pour que ca marche.

    #584509
    Remi-L
    Membre
    Initié WordPress
    16 contributions

    Bien vu ! 🙂
    C’est effectivement là que ça se passe apparemment…
    Mais je crois que le problème est un peu plus bas.

    Au début, il ne fait que de l’isolement de paragraphes.
    Ensuite, l’approche que le programmeur a adoptée est d’englober systématiquement chaque ligne dans un paragraphe avec
    $pee = preg_replace(‘/n?(.+?)(?:ns*n|z)/s’, « 

    $1

    n », $pee);
    puis de les enlever dans les cas où il y avait déjà des balises de structure.

    Le problème c’est que dans le cas d’un paragraphe vide, nous avons :

    qui donne

    et là ses lignes suivantes s’emmêlent les pinceaux en confondant contenu et structure.

    Je n’ai pas le temps tout de suite de faire des test en réel mais en lisant la routine, j’aurais tendance à dire que dans

    $pee = preg_replace(‘!<p>s*(]*>)!’, « $1 », $pee);

    il faudrait enlever ‘/?’ , c’est à dire ne pas traiter les structures

    et que dans

    $pee = preg_replace(‘!(]*>)s*</p>!’, « $1 », $pee);

    il faut remplacer ‘/?’ par ‘/’ c’est à dire ne pas traiter les structures

    J’aurais aussi tendance à ajouter   dans la ligne
    $pee = preg_replace(‘|

    s*?

    |’,  », $pee); ==> $pee = preg_replace(‘|

    s*?

    |’, ‘ ‘, $pee);
    (ligne qui semble avoir été rajoutée après coup).

    Bon, mais il faudrait tester… et c’est un peu difficile de bidouiller sans connaître l’historique de cette routine. Si le programmeur a adopté cette solution, il doit avoir des raisons…

    Une autre solution serait de forcer les 2 conditions mentionnées ci-dessus à obligatoirement être respectivement en début et en fin de ligne, cela pourrait suffire…
    Et bien entendu, il reste la possibilité de traiter le cas d’une ligne vide en cas particulier avec un beau ‘if’ pour sauter la seconde partie de cette routine… 😉

    Edit : Le code que je regarde est celui de WP 2.0.5 et non celui de MU mais il y a des grandes chances que cette routine soit la même.

    #584510
    AmO
    Participant
    Maître WordPress
    4449 contributions

    Dans WordPress, dans le dossier /wp-includes/js/tinymce/plugins/wordpress/

    dans le fichier editor_plugins.js
    Ligne 195 :

    // Remove anonymous, empty paragraphs.
    content = content.replace(new RegExp(‘<p>(\s| )*</p>‘, ‘mg’),  »);

    C’est dans ce meme fichier que tu pourrai jouer pour modifier l’insertion des « More » L174

    Bref… Tout se passe dans ce fichier… ou presque !

    #584511
    Remi-L
    Membre
    Initié WordPress
    16 contributions

    Oui, c’est intéressant…
    cela explique certaines disparitions bizarres dans l’éditeur.
    Il va falloir agir sur les 2 tableaux.

    #584512
    quentin
    Membre
    Chevalier WordPress
    315 contributions

    AmO –> Ca marche !!
    Simplement commenter cette ligne résout le problème !
    Merci 5000 fois 🙂.

    PS (sans rapport): je n’ai pas eu de réponse à ma proposition par email, j’assume que tu n’es pas intéressé ?

    #584513
    AmO
    Participant
    Maître WordPress
    4449 contributions
    quentin wrote:
    AmO –> Ca marche !!
    Simplement commenter cette ligne résout le problème !
    Merci 5000 fois 🙂.

    PS (sans rapport): je n’ai pas eu de réponse à ma proposition par email, j’assume que tu n’es pas intéressé ?

    Bien au contraire 🙂
    Juste un oubli de ma part 🙂

    Je vais tacher d’y répondre dès maintenant 😉

    #584514
    Zabelle
    Membre
    Initié WordPress
    20 contributions

    Bonsoir

    Désolée de m’incruster, mais j’ai pô trouvé… J’ai bien mis en commentaire la ligne incriminée dans le bon fichier, mais ça ne change rien à mes sauts de lignes (impossible d’en faire 2 voire plus d’affilée)

    Un p’tit coup de pouce?

    Merci!

    #584515
    AmO
    Participant
    Maître WordPress
    4449 contributions

    Avec WordPress Mu ?

11 sujets de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.