Настройка фильтра тегов в CKEditor 4.4.5

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Isuhi
Сообщения: 1
Зарегистрирован: 2017.02.27, 14:31

Настройка фильтра тегов в CKEditor 4.4.5

Сообщение Isuhi »

Всем привет!
Установил CKEditor 4.4.5 отсюда - https://github.com/MihailDev/yii2-ckeditor , относился при этом к нему со всем уважением и почтительностью. Все работает, но оказалось, что мое отношение не было взаимным, потому что в процессе работы из кода (при изменении, создании, и даже просто при использовании кнопки "Источник") удалялись ВСЕ теги HTML 5, а также ВСЕ мои классы. Учитывая, что верстка использует BEM, мои эмоции после обнаружения такого безобразия были весьма красноречивыми. Пришлось этому делу уделить аж целый день.
Быстро решить вопрос мешало два фактора - слабый (мягко говоря) английский и недостаточный опыт в программировании.
Изучение документации и привлечение гугла с яндексом давали одно решение - редактирование файла /editor/config.js таким образом:

Код: Выделить всё

CKEDITOR.editorConfig = function( config ) {
	// Define changes to default configuration here. For example:
	//	config.language = 'en';
	//	config.uiColor = '#AADC6E';
	//	config.allowedContent = true;
	
  		config.height = 50;
  		config.indentClasses = '["article-contents__items"]';
  		config.protectedSource.push(/<(style)[^>]*>.*<\/style>/ig);
  		config.protectedSource.push(/<(script)[^>]*>.*<\/script>/ig);// разрешить теги <script>
  		config.protectedSource.push(/<\?[\s\S]*?\?>/g);// разрешить php-код
 		config.protectedSource.push(/<!—dev—>[\s\S]*<!—\/dev—>/g);
 		config.allowedContent = true; /* all tags */
};
Высоту и один класс поставил для быстрой проверки работоспособности. Но по какой-то причине редактирование конфига не учитывалось, никакие настройки не применялись. Я так и не смог понять, почему, наверное, где-то надо было указывать приоритет этого файла или что-то подобное.
Ужин уже разогревался, поэтому надо было спешить. Поэтому я решил глобальные изменения настроек внести прямо в class CKEditor, а именно:

Код: Выделить всё

private function presetFull(){
        $options['height'] = 500;
	$options['allowedContent'] = true;
А настройки для каждого поля вносить при выводе, например:

Код: Выделить всё

		echo $form->field($model, 'anons')->widget(CKEditor::className(),[
		 'editorOptions' => [
       			 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать
      			 'inline' => false, //по умолчанию false
			'height' => 200,
			],
		]);
И теперь все мои семантически правильные теги и BEM классы разметки остались в полной безопасности. Сей факт меня настолько возрадовал, что я решился создать эту тему, преследуя две цели. Прежде всего (ну мало ли) - вдруг кому-то пригодится, а, во-вторых - может быть кто-то из знающих людей расскажет, почему редактирование конфига не работало.
Всем заранее спасибо.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Настройка фильтра тегов в CKEditor 4.4.5

Сообщение yiijeka »

Вероятно, не подключилось из-за того, что config.js находился в Asset генерируемой директории и скрипт
https://github.com/MihailDev/yii2-ckedi ... or.js#L181 попросту не мог его найти, т.к. искал его в в webroot . Так ли это на самом деле, можно было выяснить по ошибкам в консоле браузера...
antosh
Сообщения: 11
Зарегистрирован: 2017.04.26, 14:14
Откуда: Москва

Re: Настройка фильтра тегов в CKEditor 4.4.5

Сообщение antosh »

Isuhi писал(а): 2017.02.27, 15:58 Всем привет!
Прежде всего (ну мало ли) - вдруг кому-то пригодится, а, во-вторых - может быть кто-то из знающих людей расскажет, почему редактирование конфига не работало.
Спасибо за совет. Имею такие же проблемы в YII2, хотя с другой сборкой CК (значит автор непричем :)).
Консоль браузера не выдает ошибки/варнинги, но файл конфига не работает.
= Мои вопросы туповатые, но это мы не проходили, это нам не задавали) =
Ответить