CKEditor paski Tag

Staram się znaleźć rozwiązanie, aby uniknąć CKEditor, ale także starszy FCKeditor usuwa wszelkie <i> znacznik z wcześniej wstawionej zawartości do db.

Case:

Wstawiam zawartość html do db, część zawartości zawiera elementy <i>. Robię to z Ckeditorem. Wszystko działa idealnie, a treść pojawia się na stronie internetowej. Ale kiedy chcę edytować wcześniej wstawioną zawartość, brakuje elementów <i>.

W moim konkretnym przypadku i zastosowanie:

<i class="fa-icon-fullscreen fa-icon-xxlarge main-color"></i>

Oczywiście, jeśli wyłączę edytor, zawartość wyświetla się dobrze w textarea.

Author: Reinmar, 2013-08-15

6 answers

Gdy używane jest rozwiązanie protectedSource, znaczniki i nie są już usuwane, ale znaczniki img przestają pojawiać się w trybie WYSIWIG w Ckeditorze (używam 4.3.1). Rozwiązaniem, które działało dla mnie lepiej, jest wyłączenie usuwania pustych znaczników i za pomocą CKEDITOR.dtd.$removeEmpty

Na przykład, dodałem następujący plik do konfiguracji.js

// allow i tags to be empty (for font awesome)
CKEDITOR.dtd.$removeEmpty['i'] = false;

Uwaga: powinna być umieszczona poza funkcją CKEDITOR.editorConfig = function( config ).

 58
Author: Mike Peterson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-10 06:37:04

Znalazłem rozwiązanie tego konkretnego problemu, na który natknąłem się z tagiem <i>

Oryginalna odpowiedź dostałem z drupal forum

Poprawkę lub tweak (nazwę) dla niego jest ustawić następujące w ckeditors config.js:

// ALLOW <i></i>
config.protectedSource.push(/<i[^>]*><\/i>/g);

podziękowania dla Spasticdonkey za wskazanie mi linku.

 49
Author: HenryW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-31 09:05:57

Oto, co dla mnie działa

Dodaj 3 wiersze poniższego kodu w tej samej kolejności w ustawieniu profilu drupal CKEditor admin/config/content/ckeditor/edit / Full

Opcje zaawansowane > > Niestandardowa konfiguracja JavaScript

    config.allowedContent = true;
    config.extraAllowedContent = 'p(*)[*]{*};div(*)[*]{*};li(*)[*]{*};ul(*)[*]{*}';
    CKEDITOR.dtd.$removeEmpty.i = 0;

Pierwsza linia prawie wyłącza zaawansowane filtrowanie

Druga linia to all class (), any style {} oraz any attribute [*] for the p,div, li and ul.

Ostatni wiersz jest pusty tag...ta linia działa z obrazami...Odkryłem, że jeśli używasz config.protectedSource.push (/]*> / g); usuwa znacznik podczas edycji.

 18
Author: Alauddin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-05 21:01:04

Dla wersji 4.3 ckeditor

W config.js (po sekcji config) wklej

CKEDITOR.dtd.$removeEmpty['b'] = false;

I napisać widget z kodem

CKEDITOR.plugins.add( 'bwcaret', {
requires: ['widget'/*, 'richcombo'*/],

icons: 'bwcaret',

init: function( editor ) {

    editor.widgets.add( 'bwcaret', {

        button: 'Create a caret',

        template: '<b class="caret"></b>',


        allowedContent: 'b(!caret)',

        requiredContent: 'b(!caret)',

        upcast: function( element ) {
            return element.name == 'b' && element.hasClass( 'caret' );
        },

    });
}

});

 4
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-30 13:33:39

Są dwa możliwe problemy:

  • Przeczytaj o Advanced Content Filter . CKEditor usuwa elementy, które nie są dozwolone, ale można rozszerzyć reguły filtra.

  • Jeśli jednak problem polega na tym, że CKEditor usuwa puste elementy <i>, musisz znaleźć inny sposób jego użycia. CKEditor nie jest kreatorem stron WYSIWYG. Jest to edytor dokumentów, więc załadowana treść musi mieć znaczenie. Pusty element inline nie ma żadnego znaczenia, dlatego jest on usuwany, ponieważ w przeciwnym razie edytor nie wiedziałby, co z nim zrobić.

    Jednym z możliwych rozwiązań w (niedalekiej) przyszłości, będzie użycie systemu widgetów , do obsługi tych pustych elementów. Ale na razie radzę sprawdzić CKEDITOR.htmlDataProcessor i krótki przewodnik jak go używać.

 3
Author: Reinmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-15 11:28:57

Znalazłem na to trwałe rozwiązanie.właściwie to, co się stało, CKEditor usuwa tylko pusty znacznik.niezależnie od tagu, may b <i> tag lub <span> tag

Jeśli używasz dowolnej ikony jak font-awesome, maeterlize icon itp ... możesz go zatrzymać, używając poniższego kodu w pliku config.js

CKEDITOR.dtd.$removeEmpty.span = false; 
CKEDITOR.dtd.$removeEmpty.i = false;

Jeśli używasz więcej pustych znaczników, musisz dodać nazwę znacznika po $removeEmpty

 0
Author: Soubhagya Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-28 05:21:44