Estoy usando CKEditor como editor de fondo en mi sitio web. Sin embargo, me está conduciendo a la vuelta de la esquina, ya que parece querer cambiar el código a la forma que mejor le parezca cada vez que presiono el botón de fuente. Por ejemplo, si llego a la fuente y creo un <div>
...
<div class="myclass">some content</div>
Luego, sin razón aparente, despoja a la clase del <div>
, por lo que cuando llego a la fuente nuevamente, se ha cambiado a ...
<div>some content</div>
Supongo que este comportamiento irritante se puede desactivar en el config.js
, pero he estado cavando y no puedo encontrar nada en la documentación para desactivarlo.
Respuestas:
Deshabilitar el filtrado de contenido
La solución más fácil es ir a config.js y configurar:
( Recuerde borrar el caché del navegador ). Luego, CKEditor deja de filtrar el contenido ingresado. Sin embargo, esto deshabilitará totalmente el filtrado de contenido, que es una de las características más importantes de CKEditor.
Configurar el filtrado de contenido
También puede configurar el filtro de contenido de CKEditor con mayor precisión para permitir solo estos elementos, clases, estilos y atributos que necesita. Esta solución es mucho mejor, porque CKEditor todavía eliminará una gran cantidad de HTML basura que los navegadores producen al copiar y pegar contenido, pero no eliminará el contenido que desea.
Por ejemplo, puede extender la configuración predeterminada de CKEditor para aceptar todas las clases div:
O algunas cosas de Bootstrap:
O puede permitir listas de descripción con
dir
atributos opcionales paradt
ydd
elementos:Estos fueron solo ejemplos muy básicos. Puede escribir todo tipo de reglas, que requieren atributos, clases o estilos, que coinciden solo con elementos especiales, que coinciden con todos los elementos. También puede rechazar cosas y redefinir totalmente las reglas de CKEditor. Leer más sobre:
fuente
Encontré una solución.
Esto desactiva el filtrado, está funcionando, pero no es una buena idea ...
Para jugar con una cadena de contenido funciona bien para id, etc., pero no para los atributos de clase y estilo, porque tiene () y {} para el filtrado de clase y estilo.
Entonces, mi apuesta es permitir que cualquier clase en el editor sea:
Esto permite cualquier clase y cualquier estilo en línea.
Para permitir solo class = "asdf1" y class = "asdf2" para cualquier etiqueta:
(por lo que debe especificar los nombres de clase)
Para permitir solo class = "asdf" solo para la etiqueta p:
Para permitir el atributo id para cualquier etiqueta:
etcétera etcétera
Para permitir la etiqueta de estilo (<style type = "text / css"> ... </style>):
Para ser un poco más complejo:
Espero que sea una mejor solución ...
fuente
Editar : esta respuesta es para aquellos que usan el módulo ckeditor en drupal.
Encontré una solución que no requiere modificar el archivo ckeditor js.
esta respuesta se copia de aquí . Todos los créditos deben ir al autor original.
fuente
Desde CKEditor v4.1, puede hacer esto en config.js de CKEditor:
Puede consultar la documentación oficial para conocer la sintaxis detallada de las Reglas de contenido permitido
fuente
*[id](*)
hiciste el truco, lo intenté*[id,class]
antes, pero eso no permite el atributo de clase de alguna manera. Los documentos de CKeditor son un poco como un laberinto.si estás usando ckeditor 4.x puedes probar
Si está utilizando ckeditor 3.x, es posible que tenga este problema .
intente poner la siguiente línea en config.js
fuente
config.ignoreEmptyParagraph=false;
es la única solución que funcionó para mí, de todas las respuestas que he probado. Gracias.Esto se llama ACF (Filtro de contenido automático) en ckeditor. Elimina todas las etiquetas inútiles Lo que estamos usando en el contenido de texto. El uso de este comando en su archivo config.js debería desactivar este ACK.
fuente
Consulte la guía oficial de Filtro avanzado de contenido y el tutorial de integración de complementos .
Encontrarás mucho más que esto sobre esta poderosa característica. También vea config.extraAllowedContent que parece adecuado para sus necesidades.
fuente
Si usa Drupal Y el módulo llamado "WYSIWYG" con la biblioteca CKEditor, la siguiente solución podría ser una solución. Para mí funciona de maravilla. Yo uso CKEditor 4.4.5 y WYSIWYG 2.2 en Drupal 7.33. Encontré esta solución aquí: https://www.drupal.org/node/1956778 .
Aquí está: creo un módulo personalizado y pongo el siguiente código en el archivo ".module":
Espero que esto ayude a otros usuarios de Drupal.
fuente
El siguiente es el ejemplo completo de CKEDITOR 4.x :
HTML
GUIÓN
El código anterior permitirá todas las etiquetas en el editor.
Para más detalles: CK EDITOR Reglas de contenido permitidas
fuente
Descubrí que cambiar para usar html completo en lugar de html filtrado (debajo del editor en el cuadro desplegable Formato de texto) es lo que solucionó este problema para mí. De lo contrario, el estilo desaparecería.
fuente
Me gustaría agregar este config.allowedContent = true; debe agregarse al archivo ckeditor.config.js, no config.js, config.js no hizo nada por mí, pero agregarlo al área superior de ckeditor.config.js mantuvo mis clases div
fuente
Otra opción si usa drupal es simplemente agregar el estilo CSS que desea usar. de esa manera no elimina el estilo o el nombre de la clase.
así que en mi caso debajo de la pestaña css en drupal 7 simplemente agregue algo como
facebook = span.icon-facebook2
también verifique que el botón de estilos de fuente esté habilitado
fuente
Me enfrento al mismo problema en Chrome con ckeditor 4.7.1. Simplemente deshabilite pasteFilter en ckeditor instanceReady. Esta propiedad deshabilita todas las opciones de filtro de Advance Content Filter (ACF).
fuente