tinyMCE duplica el elemento de bloque anterior al presionar retorno (editor visual)

2

Volviéndose loco con esto. No puedo averiguar si esto es un comportamiento normal.

He añadido un filtro para volver a escribir las inserciones de imagen para utilizar <figure> y <figcaption> . Funciona bien.

Sin embargo, cuando inserto una imagen en la vista Visual y presiono regresar, quiero que comience un nuevo párrafo.

En su lugar, crea otro elemento <figure> y coloca mi siguiente línea de texto en eso.

Ejemplo del código producido si cambia a la vista de texto:

<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>

¿Hay alguna manera de evitar que tinyMCE replique el elemento del bloque anterior? Sé que si configura algún texto como, por ejemplo, un <h2> y presiona, retorna la siguiente línea por defecto a <p> . Ese es el comportamiento que quiero.

    
pregunta Pete 31.01.2013 - 22:57

4 respuestas

2

Actualmente estoy teniendo el mismo problema. Aquí está mi solución.

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 le da acceso a la configuración de TinyMCE que usa el editor de WordPress. Consulte también: TinyMCEConfiguration

La desventaja de esto es que, en lugar de "devolver", da como resultado una p que, en cambio, te ofrece una br . He intentado revertir force_br_newlines y force_p_newlines pero el problema es original. Espero que esto sea de alguna ayuda.

    
respondido por el Ryan Gannon 22.02.2013 - 16:50
1

Tuve el mismo problema, pero no en Wordpress. De todos modos, obligo al bloque 'p' a tomar el contenido entre las etiquetas 'p'. Y debido a eso, cuando presiono el botón de retorno y guardo el contenido en DB, TinyMce duplica las etiquetas 'p'. Además, duplica las etiquetas todas las veces que lo guardo de nuevo. Mi solución está en el inicio:

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

Lo más importante son los inválidos_elementos. Aquí tienes que enumerar la etiqueta 'p'. Después de esta configuración, mi código ya no duplica la etiqueta 'p'. Espero que tu hagas lo mismo.

    
respondido por el Imre 29.05.2017 - 14:47
1

Puedes configurar la opción keep_styles en false en init.

Esta opción mantendrá el estilo de texto actual del editor cuando un usuario presione ingresar / regresar.

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

Tomado de los docs

    
respondido por el musicvicious 22.05.2018 - 16:26
0

Aquí hay otra versión de la solución. Tengo que escribir una nueva, porque la anterior está bien, pero no funciona con todas las demás configuraciones. Esta solución deja de duplicar las etiquetas p después de nuevas líneas y encabezados, pero coloca una etiqueta simple br entre los párrafos.

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

Utilizo extended_valid_elements porque no quiero volver a definir la configuración predeterminada, solo un valor de valid_elements. El significado de -p y las otras configuraciones son aquí .

Tenga en cuenta que con esta configuración, verá un espacio más grande entre los elementos de texto en el editor visualmente.

    
respondido por el Imre 07.06.2017 - 13:24

Lea otras preguntas en las etiquetas