Для подключения CKEditor к YII, я использовал расширения из yiiext. Скачиваем его и распаковываем в каталлог с расширениями. У меня получилось: application.extensions.ckeditor

Теперь создаем в этом каталоге, папку assets и распаковываем туда файлы самого CKEditor, которые скачиваем с официально сайта (я скачал ckeditor 4). Виджет отказался запускаться ссылаясь на некоторые ошибки. Чтобы он заработал открываем файл ECKEditor.php идем на строку 69 и меняем:

private $skin='moono';
на
public $skin='moono'; // тут также можем указать свою тему

Дальше функция setLanguage($value), меняем:

if(isset($this->allowedLanguages[$language]))
    $this->language=$language;
на
if(isset($this->allowedLanguages[$lang]))
    $this->language=$lang;

Теперь виджет можно подключить следующим образом, как стандартный виджет yii.

<?php $this->widget('application.extensions.ckeditor.ECKEditor', array(
			'model'=>$model,
			'attribute'=>'html',
			'language'=>'ru',
			'editorTemplate'=>'full',
			'height'=>'500px'
)); ?>

editorTemplate может быть также basic. В CKEditor 4 в конфигах не получается указать сразу несколько шаблонов как в предыдущих версиях редактора, поэтому в коде extesions дописал при выборе basic версии, такой вот код в replace:

if($this->editorTemplate=='basic') {
			$js =<<<EOP
CKEDITOR.replace('{$name}', { toolbarGroups : [

		{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
		{ name: 'paragraph',   groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
		{ name: 'styles' },
		{ name: 'colors' }],
		height: '$this->height'});
EOP;
		}
		else {
			$js =<<<EOP
CKEDITOR.replace('{$name}',{$options});
EOP;
		}

Также добавил настройки форматирования кода в редакторе и файл менеджер KCFinder для загрузки файлов через CKEditor, которые описывал тут: Настройка CKEditor 4, подключение файлменеджера KCFinder

Чтобы вам все это заново не делать, собрал все в один extension для Yii, архив нужно распаковать в /protected/extensions/, в корне сайта должна быть папка upload с правами на запись (туда будут складываться загруженные через редактор файлы)

Скачть Yii extension CKEditor c файлменеджером

Надеюсь что это сэкономит кому то не мало времени.

Читать похожие статьи:

24 комментариев “Yii extension CKEditor с бесплатным файловым менеджером”

  1. vitalik:

    Спасибо большое!

  2. frazelli:

    То что надо! Огромное Вам спасибо!

  3. Denis:

    Установил полный пакет. При нажатии на кнопку выбрать на сервере
    вылазиет JS что cannot upload to … my dir. Хотя все права 777 все проверил

  4. Alexander:

    Благодарю!

  5. Спасибо, давно искал такое расширения.

  6. А как убрать лишние кнопки? Спасибо за ответ.

  7. Спасибо, вроде уже разобрался сам. Если правильно понял, просто нужно в ECKEditor.php прописать как в примере в статье, только как advanced.

  8. Если использовать «advanced», то при нажатии на вставить картинку нет кнопки «выбрать на сервере», как сделать? :)

  9. Хорошо бы если вы выложили свой код на github.

  10. atom:

    2Denis:
    проверьте версию php. у меня была похожая (не именно с KCFinder, а в целом с загрузкой) на 5.3, когда обновился на 5.5 все ок.

  11. Dmitry:

    Спасибо!

  12. Богдан:

    Добрый день)
    Спасибо за большое доброе дело)
    Но встал вопрос- нужно загружать видео(во основном из youTube).
    Пытался ставить плагин чисто для ютюба, так же стандартный плагин для iframe(то же годится).
    Но не разобрался:
    - Как настраивать вывод различных функций при выборе «full\basic»?
    - Как подключить и активировать сам новый плагин?
    Если кто то поможет\подскажет- буду благодарен)

  13. Богдан:

    Добрый день.
    Как настраивать вывод нужный кнопок разобрался.
    Можно вызвать CKEditor так: ‘editorTemplate’=>’advanced’, далее пишем ‘toolbar’=>array(
    array( ‘Source’, ‘-’, ‘Bold’, ‘Italic’,),
    array( »Underline’, ‘Strike’,)
    ),
    Но как подключить новый плагин так и не разобрался. Буду благодарен если кто то обьяснит.

  14. Спасибище огромнейшее! Залил – все работает, без всяких плясок))) Сэкономил КУЧУ времени! Спасибо!

  15. Подскажите а позволяет ли это расширение вставлять ролики с youtube?

  16. Дмитрий:

    У меня возникли проблемы
    При попытке загрузить катинку на сервер Фаербаг пишет:
    «NetworkError: 404 Not Found – http://localhost/site.ru/uploads/images/IMAG0387.jpg»

    Пробовал и с папкой upload и с папкой /uploads/images
    не получается. Насколько мне известно права папке на локальном хосте указывать невозможно. Помогите разобраться. Спасибо.

  17. Аленсандр:

    увы но
    евозможно обработать запрос «protected/extensions/ckeditor/kcfinder/browse.php».
    и это логично, протектед напрямую не откроешь

  18. konstantin:

    Спасибо!!! после 24 часов плясок с ckeditor+ckfinder (на локальном сервере нормально все работало, а на боевом … ошибка XML и хоть ты тресни) набрел на вашу статью и ШАСЦЕ)))

  19. Tsey:

    Подключил как виджет в даминке к редактированию новостей.
    Пишет,
    Property «ClubNews.html» is not defined.

  20. Антон:

    А у меня он не выводит кнопки выравнивания текста… уже сбрасывал и настраивал по тутору.. все равно

  21. Антон:

    и еще одна беда: при отправке формы пишет post_text cannot be blank..
    post_text это как раз то поле:

    widget(‘application.extensions.ckeditor.ECKEditor’, array(
    ‘model’ => $model,
    ‘attribute’=>’post_text’,
    ‘language’=>’ru’,
    ‘editorTemplate’=>’full’,
    ‘height’=>’300px’
    )); ?>

  22. Николай:

    Огромное спасибо. Про***лся день, как-то сразу не нашел этот мануал

  23. Сергей:

    Как настроить чтобы, кроме картинок, еще файлы загружались?

  24. Valery:

    Спасибо огромное. Отвел на решение этой правки целый день, а решил за 20 минут!

    Спасибо огромное!!!!!