- Statut : non résolu
- Ce sujet contient 10 réponses, 4 participants et a été mis à jour pour la dernière fois par
AmO, le il y a 18 années et 1 mois.
-
AuteurMessages
-
16 novembre 2006 à 17 h 07 min #449353
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 🙂.
17 novembre 2006 à 17 h 08 min #584506A 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 ?! 🙂))17 novembre 2006 à 17 h 44 min #584507Je 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… ».
18 novembre 2006 à 7 h 26 min #584508functions-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.18 novembre 2006 à 13 h 54 min #584509Bien 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.
18 novembre 2006 à 14 h 15 min #584510Dans 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 !
18 novembre 2006 à 14 h 56 min #584511Oui, c’est intéressant…
cela explique certaines disparitions bizarres dans l’éditeur.
Il va falloir agir sur les 2 tableaux.19 novembre 2006 à 11 h 34 min #584512AmO –> 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é ?
19 novembre 2006 à 12 h 34 min #584513quentin 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 😉
31 mars 2007 à 20 h 01 min #584514Bonsoir
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!
31 mars 2007 à 20 h 58 min #584515Avec WordPress Mu ?
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.