2013-04-02 12 views
18

Używam CKEditor przez pewien czas i działa świetnie. Prawie pozbyłem się problemów, które miałem, ale tego nie mogłem wymyślić. Kiedy dodaję atrybuty wbudowane do elementów na przykład style = "color: #ff0;" na znaczniku <p></p>, są one usuwane po przełączeniu z wysiwyg na widok źródłowy. Nie zapisano ani nie przesłano, a do mojej strony dodano cedenta, który jest moim własnym skryptem. Wszelkie pomysły co do tego powodu. Wszystkie wyniki wyszukiwania, które mogę znaleźć odpowiadają temu zdarzeniu w Drupalu, ale Drupal wydaje się być problemem, nie redaktorem we wszystkich przypadkach. Dzięki jeszcze raz!Paski CKEditor inline atrybutów

+0

także redaktorem został skonfigurowany do trybu FullPage co pozwala mi dodać '' ale atrybuty śródliniowe są wciąż usunięte. – tiantang

Odpowiedz

28

Wydaje się, że używasz CKEditor 4.1+, który jest dostarczany z Advanced Content Filter (ACF). Jeśli tak, musisz określić config.allowedContent i configure it, aby Twoje rzeczy działały. Możesz być także zainteresowany config.extraAllowedContent.

Aby uzyskać więcej informacji, patrz this answer.

+1

Linki wyglądają na zepsute. Dokumentacja jest dostępna na stronie http://docs.ckeditor.com/ dla zainteresowanych. – Nenotlep

+0

@Nenotlep Linki wydają się działać dobrze. Spróbuj ponownie i potwierdź proszę. – oleq

+0

Nadal nie działa. Dla mnie wszystkie linki wyglądają jak "http: //ckeditor-docs.t/#!/...", co oczywiście kończy się niepowodzeniem. Zarówno IE, jak i Chrome. – Nenotlep

8

Dla każdego, kto szuka prostego próbki na temat włączoną dodatkowych znaczników w CKEditor bez wyłączania ACF całkowicie, oto krótki fragment:

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

extraAllowedContent tutaj pozwala element <style>, pozwala na dwa dodatkowe atrybuty (w nawiasy kwadratowe) dla wszystkich (* jest wieloznaczny) już dozwolony elementów, umożliwia wykorzystanie dowolnych nazw klas (*) dla nich i umożliwia wykorzystanie dowolnych stylów inline {*}

4

hi można zatrzymać ACF łatwo. domyślnie jest Twój configaration ---

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

tylko dodać to w nawiasach klamrowych:

allowedContent: true 

teraz konfiguracja będzie:

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

To działało ze mną! Dzięki! – Phuong

1

miałem ten sam problem, że ck usuwał nie tylko niektóre atrybuty, ale całe elementy podczas wklejania elementu blokowego, wewnątrz elementu blokowego (div z niektórymi atrybutami wklejonymi wewnątrz ap) przy użyciu tej metody:

editor.insertHtml(html); 

co rozwiązuje problem używał tego obejścia zamiast:

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

I w obliczu tego samego problemu, a poniżej odpowiedź rozwiązać mój problem:

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