Я использую WYSIWYG редактор с CKEditor. Я обнаружил, что при добавлении пользовательских классов в мои элементы из представления «источник», CKEditor удаляет эти классы при переключении из представления источника.
При поиске решения этой проблемы я нашел страницу модуля CKEditor, в которой описано, как это исправить при использовании только CKEditor. (По сути, нам нужно настроить конфигурацию JS config.allowedContent = true
в ее настройках Advanced Content Filter).
Однако при использовании CKEditor через WYSIWYG эти настройки не отображаются в интерфейсе администратора. Как добиться того же при использовании CKEditor через WYSIWYG?
PS: я не могу использовать один CKEditor, потому что он не интегрируется с плагином медиа .
Ответы:
Какую версию CKEditor вы используете? Существует проблема с CKEditor 4.1+, который имеет функцию под названием Автоматический фильтр содержимого (ACF), которая автоматически удаляет атрибуты, не определенные для редактора: https://drupal.org/node/1956778
Патч № 37 в номере работал на меня.
источник
editors/ckeditor.inc
«Swysiwyg_ckeditor_settings
FuncitonЯ нашел решение.
Это отключает фильтрацию, работает, но не очень хорошая идея ...
Играть со строкой содержимого отлично работает для id и т. Д., Но не для атрибутов класса и стиля, потому что у вас есть () и {} для фильтрации классов и стилей.
Так что моя ставка на то, чтобы разрешить любой класс в редакторе:
Это позволяет любой класс и любой встроенный стиль.
Разрешить только class = "asdf1" и class = "asdf2" для любого тега:
(поэтому вы должны указать имена классов)
Разрешить только class = "asdf" только для тега p:
Чтобы разрешить атрибут id для любого тега:
и т. д.
Чтобы разрешить тег стиля (<style type = "text / css"> ... </ style>):
Чтобы быть немного сложнее:
Надеюсь, это лучшее решение ...
источник
Это похоже на то, что следует добавить в модуль WYSIWYG, возможность добавления пользовательских настроек в редакторы является довольно распространенным требованием. Но в отсутствие этого я все же рекомендую не редактировать сам модуль, так как он будет поврежден при обновлении ... к счастью, модуль обеспечивает вызов
drupal_alter
, поэтому в пользовательском модуле:где «mymodule» - это, очевидно, название вашего пользовательского модуля. Это выполняет задачу, не редактируя чужой модуль.
источник
Попробуйте добавить следующее в модули / wysiwyg / editors / ckeditor.inc
'allowedContent' => TRUE,
вfunction wysiwyg_ckeditor_settings($editor, $config, $theme)
так что теперь он читает:
источник
Не взламывая какие-либо источники, а также не пытаясь выяснить, ГДЕ читаются эти настройки, вы можете добавить это в свой собственный модуль
Настройки, которые запрашивает OP, взяты
*(*);*{*}
из ответа @Tommy выше. Кажется, это позволяет атрибуты класса и стиля для любого элемента. Остальные только примеры записей. В качестве другого примера, эта запись разрешает теги, необходимые для медиа-модуля.источник
Фильтрованный HTML-фильтр удаляет классы из элементов, которых нет в его разрешенных HTML-элементах .
<p>
Тэг абзаца ( ) по умолчанию отсутствует (что может сбивать с толку и неестественно), хотя это может быть самым частым элементом, к которому применяется класс. Как только вы поместите его туда, фильтрованный HTML больше не будет удалять классы из этих тегов. То же самое касается тегов изображения (<img>
).источник