Używam edytora WYSIWYG z CKEditor. Zauważyłem, że podczas dodawania niestandardowych klas do moich elementów z widoku „źródłowego”, CKEditor usuwa te klasy przy wyłączaniu widoku źródłowego.
Gdy szukam rozwiązania tego problemu, znalazłem stronę modułu CKEditor, która opisuje, jak to naprawić, używając samego CKEditora. (Zasadniczo musimy skonfigurować konfigurację JS config.allowedContent = true
w ustawieniach Advanced Content Filter).
Jednak podczas korzystania z CKEditor przez WYSIWYG te ustawienia nie są ujawniane w interfejsie administratora. Jak to osiągnąć, używając CKEditor przez WYSIWYG?
PS: Nie mogę korzystać z samego CKEditora, ponieważ nie integruje się on z wtyczką mediów .
Odpowiedzi:
Jakiej wersji CKEditor używasz? Występuje problem z CKEditor 4.1+, który ma funkcję o nazwie Automatic Content Filter (ACF), która automatycznie usuwa atrybuty niezdefiniowane dla edytora: https://drupal.org/node/1956778
Łatka # 37 w tym numerze działała dla mnie.
źródło
editors/ckeditor.inc
„swysiwyg_ckeditor_settings
funcitonZnalazłem rozwiązanie.
To wyłącza filtrowanie, działa, ale nie jest to dobry pomysł ...
Gra ciągiem treści działa dobrze dla id, itp., Ale nie dla atrybutów class i style, ponieważ masz () i {} dla filtrowania klas i stylów.
Więc zakładam się, aby zezwolić dowolnej klasie w edytorze:
Umożliwia to dowolną klasę i dowolny styl wbudowany.
Aby dopuścić tylko class = „asdf1” i class = „asdf2” dla dowolnego znacznika:
(więc musisz podać nazwy klas)
Aby zezwolić tylko klasie = "asdf" tylko dla znacznika p:
Aby zezwolić na atrybut id dla dowolnego tagu:
itd itd
Aby zezwolić na znacznik stylu (<style type = "text / css"> ... </style>):
Aby być nieco bardziej złożonym:
Mam nadzieję, że to lepsze rozwiązanie ...
źródło
Wydaje się, że należy to dodać do modułu WYSIWYG. Możliwość dodawania niestandardowych ustawień do edytorów jest dość powszechnym wymogiem. Ale w przypadku braku tego nadal polecam nie edytować samego modułu, ponieważ psuje się on przy uaktualnieniach ... na szczęście moduł zapewnia wywołanie
drupal_alter
, więc w module niestandardowym:gdzie „mymoduł” to oczywiście nazwa niestandardowego modułu. Wykonuje to zadanie bez edytowania czyichś modułów.
źródło
Spróbuj dodać następujące elementy do module / wysiwyg / editors / ckeditor.inc
'allowedContent' => TRUE,
dofunction wysiwyg_ckeditor_settings($editor, $config, $theme)
tak, że teraz brzmi:
źródło
Bez włamywania się do żadnych źródeł, a także bez próby ustalenia GDZIE odczytywane są te ustawienia, możesz dodać to do własnego modułu niestandardowego
Ustawienia, o które prosi OP,
*(*);*{*}
pochodzą z odpowiedzi @Tommy powyżej. Wydaje się, że pozwala to na atrybuty klasy i stylu dla dowolnego elementu. Reszta to tylko przykładowe wpisy. Jako kolejny przykład ten wpis dopuszcza tagi potrzebne modułowi multimediów.źródło
Filtrowany filtr HTML usuwa klasy z elementów, które nie znajdują się w dozwolonych elementach HTML . Znacznik akapitu (
<p>
) nie jest tam domyślnie (co może być mylące i nienaturalne), chociaż może być najczęstszym elementem, w którym stosowana jest klasa. Po umieszczeniu go tam Filtrowany HTML nie będzie już usuwał klas z tych tagów. To samo dotyczy tagów graficznych (<img>
).źródło