2013-04-02 8 views
18

Ich habe CKEditor seit einiger Zeit verwendet und es hat gut funktioniert. Ich bin ziemlich gut von irgendwelchen Problemen befreit, die ich hatte, aber diese, die ich anscheinend nicht herausfinden kann. Wenn ich Inline-Attribute zu Elementen für Instanz style = "color: #ff0;" auf einem <p></p>-Tag hinzufügen, werden sie beim Wechsel von WYSIWYG zur Quellansicht entfernt. Kein Speichern oder Übermitteln ist erfolgt und ckeditor wurde zu meiner Site hinzugefügt, die mein eigenes Skript ist. Irgendwelche Ideen, was das verursachen würde. Alle Suchergebnisse, die ich finden kann, entsprechen dem in Drupal, aber Drupal scheint das Problem zu sein, nicht der Editor in allen Fällen. Danke noch einmal!CKEditor streift Inline-Attribute

+0

Auch der Editor blattgr Modus konfiguriert wurde wodurch ich '' hinzufügen kann, aber Inline-Attribute werden immer noch entfernt. – tiantang

Antwort

28

Es fühlt sich an, als ob Sie den CKEditor 4.1+ verwenden, der mit Advanced Content Filter (ACF) geliefert wird. Wenn ja, müssen Sie config.allowedContent und configure it angeben, damit Ihre Sachen funktionieren. Sie könnten auch interessiert sein an config.extraAllowedContent.

Weitere Informationen finden Sie unter this answer.

+1

Links erscheinen unterbrochen. Die Dokumentation ist für Interessierte unter http://docs.ckeditor.com/ verfügbar. – Nenotlep

+0

@Nenotlep Links scheinen gut zu funktionieren. Bitte versuchen Sie es erneut und bestätigen Sie es bitte. – oleq

+0

Funktioniert immer noch nicht. Für mich sehen alle Links wie "http: //ckeditor-docs.t/#!/..." aus, was offensichtlich fehlschlägt. Sowohl IE als auch Chrome. – Nenotlep

8

Für alle, die eine einfache Probe suchen, wie in CKEditor zusätzlichen Markup ermöglicht, ohne ACF Deaktivierung vollständig, hier ist ein kurzer Ausschnitt:

CKEDITOR.replace('editor1', { 
    extraAllowedContent: 'style;*[id,rel](*){*}' 
}); 

extraAllowedContent hier ermöglicht es das <style> Element, ermöglicht es, zwei zusätzliche Attribute (in eckigen Klammern) für alle (* ist ein Platzhalter) bereits erlaubt Elemente, ermöglicht den Einsatz von irgendwelchen Klassennamen (*) für sie und ermöglicht den Einsatz von irgendwelchen Inline-Styles {*}

4

hallo Sie ACF leicht zu stoppen. Werkseitig ist Ihre configaration ist ---

function ckeditor($name,$value='',$height=300){ 
    return '<textarea name="'.addslashes($name).'">'.htmlspecialchars($value).'</textarea> 
<script>$(function(){CKEDITOR.replace("'.addslashes($name).'",{});});</script>'; 
} 

fügen Sie diese einfach in den geschweiften Klammern:

allowedContent: true 

jetzt Ihre Konfiguration wird:

function ckeditor($name,$value='',$height=300){ 
    return '<textarea name="'.addslashes($name).'">'.htmlspecialchars($value).'</textarea> 
<script>$(function(){CKEDITOR.replace("'.addslashes($name).'",{allowedContent: true});});</script>'; 
} 
+0

Das hat mit mir funktioniert! Vielen Dank! – Phuong

1

ich hatte das gleiche Problem, dass ck löschte nicht nur einige Attribute, sondern ganze Elemente beim Einfügen eines Blockelements innerhalb eines Blockelements (div mit einigen Attributen, die in p eingefügt sind), während diese Methode verwendet wurde:

editor.insertHtml(html); 

was das Problem gelöst, diese Abhilfe stattdessen wurde mit:

editor.insertElement(CKEDITOR.dom.element.createFromHtml(html)); 
2

stand ich das gleiche Problem und unten Antwort mein Problem gelöst:

config.allowedContent = true; 
config.extraAllowedContent = '*(*);*{*}'; 
config.extraAllowedContent = 'span;ul;li;table;td;style;*[id];*(*);*{*}';