it-swarm.com.de

tinyMCE dupliziert das vorherige Blockelement beim Drücken der Eingabetaste (visueller Editor)

Wahnsinn damit. Kann nicht herausfinden, ob dies normal ist.

Ich habe einen Filter zum Umschreiben von Bildeinfügungen hinzugefügt, um <figure> und <figcaption> zu verwenden. Funktioniert gut.

Wenn ich jedoch ein Bild in die visuelle Ansicht einfüge und die Eingabetaste drücke, soll ein neuer Absatz beginnen.

Stattdessen wird ein weiteres <figure> -Element erstellt und meine nächste Textzeile darin eingefügt.

Beispiel für den Code, der beim Wechsel in die Textansicht erzeugt wird:

<figure class="alignnone">

<a href="path/to/image.jpg"><img class="alignnone size- wp-image-209" src="path/to/image.jpg" width="199" height="43" /></a>

<figcaption>Image Caption</figcaption>

</figure>

<figure class="alignnone"`>This should be a new paragraph but is inside a figure tag.</figure>

Kann ich tinyMCE auf irgendeine Weise daran hindern, das vorherige Blockelement zu replizieren? Ich weiß, ob Sie einen Text als <h2> festlegen und die Eingabetaste drücken, um die nächste Zeile standardmäßig auf <p> zurückzusetzen. Das ist das Verhalten, das ich will.

2
Pete

Ich habe derzeit das gleiche Problem. Hier ist meine Abhilfe.

add_filter( 'tiny_mce_before_init', 'workaround' );
public function workaround( $in ) {
    $in['force_br_newlines'] = true;
    $in['force_p_newlines'] = false;
    $in['forced_root_block'] = '';
    return $in;
}

tiny_mce_before_init gibt Ihnen Zugriff auf die TinyMCE-Einstellungen, die der WordPress-Editor verwendet. Siehe auch: TinyMCEConfiguration

Der Nachteil ist, dass anstelle von "return" einpangezeigt wird, stattdessen einbr. Ich habe versucht,force_br_newlinesundforce_p_newlinesumzukehren, aber dies hat das ursprüngliche Problem zur Folge. Ich hoffe, das ist hilfreich.

2
Ryan Gannon

Sie können die Option keep_styles bei init auf false setzen.

Diese Option behält den aktuellen Textstil des Editors bei, wenn ein Benutzer die Eingabetaste drückt.

tinymce.init({
  selector: 'textarea',  // change this value according to your HTML
  keep_styles: false
});

Entnommen aus docs

1
musicvicious

Ich hatte das gleiche Problem, aber nicht in Wordpress. Wie auch immer, ich zwinge den 'p'-Block, den Inhalt zwischen' p'-Tags zu übernehmen. Und aus diesem Grund dupliziert der TinyMce die "p" -Tags, wenn ich auf die Schaltfläche "Zurück" drücke und den Inhalt in der Datenbank speichere. Außerdem werden die Tags jedes Mal dupliziert, wenn ich sie erneut speichere. Meine Lösung ist in die Init:

force_br_newlines: true,
force_p_newlines: false,
forced_root_block: 'p',
invalid_elements: 'p',

Das wichtigste sind die ungültigen_Elemente. Hier muss man das 'p' Tag auflisten. Nach dieser Einstellung dupliziert mein Code das "p" -Tag nicht mehr. Ich hoffe, dein Wille tut dasselbe.

1
Imre

Hier ist eine weitere Version der Lösung. Ich muss ein neues schreiben, weil das vorherige OK ist, aber es funktioniert nicht mit allen anderen Einstellungen. Diese Lösung beendet das Duplizieren von p-Tags nach neuen Zeilen und Überschriften, setzt jedoch ein einfaches br-Tag zwischen die Absätze.

forced_root_block: 'p',
force_p_newlines: false,
force_br_newlines: false,
extended_valid_elements: '-p',

Ich verwende die Werte für "extended_valid_elements", da ich die Standardeinstellung nicht neu definieren möchte, sondern nur einen Wert der Werte für "valid_elements". Die Bedeutung von -p und die anderen Einstellungen sind hier .

Beachten Sie, dass Sie mit dieser Einstellung visuell einen größeren Abstand zwischen den Textelementen im Editor sehen.

0
Imre