Ich verwende den WYSIWYG-Editor mit CKEditor. Ich stelle fest, dass CKEditor beim Hinzufügen von benutzerdefinierten Klassen zu meinen Elementen aus der "Quell" -Ansicht diese Klassen entfernt, wenn Sie aus der Quellansicht wechseln.
Als ich nach einer Lösung für dieses Problem suchte, fand ich die Seite des CKEditor-Moduls, auf der beschrieben wird, wie dies behoben werden kann, wenn nur CKEditor verwendet wird. (Grundsätzlich müssen wir eine JS-Konfiguration config.allowedContent = true
in den Einstellungen für den erweiterten Inhaltsfilter einrichten .)
Bei Verwendung von CKEditor über WYSIWYG werden diese Einstellungen jedoch nicht in der Administrationsoberfläche angezeigt. Wie erreichen Sie dasselbe, wenn Sie CKEditor über WYSIWYG verwenden?
PS: Ich kann CKEditor nicht alleine verwenden, da es nicht in das Medien-Plugin integriert ist .
Antworten:
Welche Version von CKEditor verwenden Sie? Es gibt ein Problem mit CKEditor 4.1+, das über eine Funktion namens Automatic Content Filter (ACF) verfügt, mit der Attribute, die nicht für den Editor definiert wurden, automatisch entfernt werden: https://drupal.org/node/1956778
Patch Nr. 37 in der Ausgabe hat bei mir funktioniert.
quelle
editors/ckeditor.inc
‚swysiwyg_ckeditor_settings
funcitonIch habe eine Lösung gefunden.
Dies schaltet die Filterung aus, es funktioniert, aber keine gute Idee ...
Das Spielen mit einer Inhaltszeichenfolge funktioniert gut für ID usw., jedoch nicht für die Klassen- und Stilattribute, da Sie () und {} für die Klassen- und Stilfilterung haben.
Meine Wette ist also, dass jede Klasse im Editor zugelassen wird:
Dies ermöglicht jede Klasse und jeden Inline-Stil.
So lassen Sie für jedes Tag nur class = "asdf1" und class = "asdf2" zu:
(Sie müssen also die Klassennamen angeben)
So erlauben Sie nur class = "asdf" nur für das p-Tag:
So lassen Sie das ID-Attribut für ein beliebiges Tag zu:
etc etc.
So erlauben Sie ein Style-Tag (<style type = "text / css"> ... </ style>):
Um etwas komplexer zu sein:
Hoffe es ist eine bessere Lösung ...
quelle
Dies scheint etwas zu sein, das dem WYSIWYG-Modul hinzugefügt werden sollte. Die Möglichkeit, Editoren benutzerdefinierte Einstellungen hinzuzufügen, ist eine weit verbreitete Anforderung. In Ermangelung dessen empfehle ich dennoch, das Modul selbst nicht zu bearbeiten, da es bei Upgrades beschädigt werden würde. Glücklicherweise bietet das Modul einen Aufruf an
drupal_alter
, also in einem benutzerdefinierten Modul:Dabei ist "mymodule" offensichtlich der Name Ihres benutzerdefinierten Moduls. Dies erledigt die Aufgabe, ohne ein anderes Modul zu bearbeiten.
quelle
Fügen Sie den Modulen / wysiwyg / editors / ckeditor.inc Folgendes hinzu
'allowedContent' => TRUE,
zufunction wysiwyg_ckeditor_settings($editor, $config, $theme)
so dass es jetzt lautet:
quelle
Ohne Quellen zu hacken und auch ohne herauszufinden, wo diese Einstellungen gelesen werden, können Sie dies Ihrem eigenen benutzerdefinierten Modul hinzufügen
Die Einstellungen, nach denen das OP fragt, stammen
*(*);*{*}
aus der Antwort von @Tommy oben. Dies scheint Klassen- und Stilattribute für jedes Element zuzulassen. Der Rest sind nur Beispieleinträge. Als weiteres Beispiel ermöglicht dieser Eintrag die vom Medienmodul benötigten Tags.quelle
Der gefilterte HTML-Filter entfernt die Klassen von Elementen, die nicht in den zulässigen HTML-Elementen enthalten sind . Das Absatz-Tag (
<p>
) ist standardmäßig nicht vorhanden (was verwirrend und unnatürlich sein kann), obwohl es möglicherweise das häufigste Element ist, auf das die Klasse angewendet wird. Sobald Sie es dort abgelegt haben, entfernt gefiltertes HTML die Klassen nicht mehr von diesen Tags. Gleiches gilt für Bild-Tags (<img>
).quelle