Estoy usando el editor WYSIWYG con CKEditor. Estoy descubriendo que al agregar clases personalizadas a mis elementos desde la vista de "fuente", CKEditor elimina esas clases al cambiar de la vista de fuente.
Cuando busqué en Google una solución a esto, encontré la página del módulo CKEditor que describe cómo solucionar esto cuando se usa CKEditor solo. (Básicamente, necesitamos configurar una configuración JS config.allowedContent = true
en su configuración de Filtro de contenido avanzado).
Sin embargo, cuando se usa CKEditor a través de WYSIWYG, estas configuraciones no están expuestas en la interfaz de administración. ¿Cómo se logra lo mismo cuando se usa CKEditor a través de WYSIWYG?
PD: No puedo usar CKEditor solo porque no se integra con el complemento de medios .
Respuestas:
¿Qué versión de CKEditor estás usando? Hay un problema con CKEditor 4.1+, que tiene una característica llamada Filtro automático de contenido (ACF) que eliminará automáticamente los atributos no definidos para el editor: https://drupal.org/node/1956778
El parche # 37 en el número funcionó para mí.
fuente
editors/ckeditor.inc
lawysiwyg_ckeditor_settings
función deEncontré 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
Esto parece algo que debería agregarse al módulo WYSIWYG, la capacidad de agregar configuraciones personalizadas a los editores es un requisito bastante extendido. Pero en ausencia de eso, todavía recomiendo no editar el módulo en sí, ya que se rompería en las actualizaciones ... afortunadamente, el módulo proporciona una llamada
drupal_alter
, por lo que en un módulo personalizado:donde "mymodule" es obviamente el nombre de su módulo personalizado. Esto lleva a cabo la tarea sin editar el módulo de otra persona.
fuente
Intente agregar lo siguiente a modules / wysiwyg / editors / ckeditor.inc
'allowedContent' => TRUE,
afunction wysiwyg_ckeditor_settings($editor, $config, $theme)
para que ahora se lea:
fuente
Sin hackear ninguna fuente, y también sin tratar de averiguar DÓNDE se están leyendo estos ajustes, puede agregar esto a su propio módulo personalizado
La configuración que solicita el OP
*(*);*{*}
proviene de la respuesta de @Tommy anterior. Esto parece permitir atributos de clase y estilo en cualquier elemento. El resto son solo entradas de ejemplo. Como otro ejemplo, esta entrada permite las etiquetas que necesita el módulo de medios.fuente
El filtro HTML filtrado elimina las clases de elementos que no están en sus elementos HTML permitidos . La etiqueta de párrafo (
<p>
) no está allí por defecto (lo que puede ser confuso y poco natural), aunque puede ser el elemento más frecuente en el que se aplica la clase. Una vez que lo coloque allí, el HTML filtrado ya no eliminará las clases de estas etiquetas. Lo mismo ocurre con las etiquetas de imagen (<img>
).fuente