Yii2. Установка и настройка TinyMCE. Интеграция файлового менеджера RESPONSIVE filemanager в TinyMCE

Устанавливаем редактор TinyMCE

Установим TinyMCE с помощью composer, для этого открываем консоль, переходим в папку с проекотм и вводим команду для установки:

  1. composer require 2amigos/yii2-tinymce-widget:~1.1

После установки можем использовать, пример:

  1. <?php
  2.  
  3. //...
  4. use dosamigos\tinymce\TinyMce;
  5.  
  6. //...
  7. $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
  8.  
  9. //..
  10. echo $form->field($model, 'text')->widget(TinyMce::className(), [
  11. 'options' => ['rows' => 6],
  12. 'language' => 'ru',
  13. 'clientOptions' => [
  14. 'plugins' => [
  15. 'advlist autolink lists link charmap print hr preview pagebreak',
  16. 'searchreplace wordcount textcolor visualblocks visualchars code fullscreen nonbreaking',
  17. 'save insertdatetime media table contextmenu template paste image'
  18. ],
  19. 'toolbar' => 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image'
  20. ]
  21. ]);

Вот что получим:

По умолчанию работа с изображениями в TinyMCE выглядит так:

Для удобной загрузки файлов и картинок добавим расширение RESPONSIVE filemanager для TinyMCE:

И так, приступим.

Интеграция файлового менеджера RESPONSIVE filemanager в TinyMCE

Для начала необходимо скачать файловый менеджер для TinyMCE: http://www.responsivefilemanager.com/#download-section

Распаковываем архив RESPONSIVE filemanager в папку: /backend/web/plugins/responsivefilemanager.

Папки для хранения файлов

Создадим папки для загрузки файлов. Нам необходимо создать 2 папки, uploads - корневая папка для загрузки файлов, uploads_thumbs - для хранения миниатюр. Создадим эти две папки по пути: /frontend/web/.

Далее приступим к настройке RESPONSIVE filemanager.

Настройка путей RESPONSIVE filemanager

Откройте файл: /backend/web/plugins/responsivefilemanager/filemanager/config/config.php

Зададим путь к папке для загрузки файлов относительно корня сайта, он должен начинаться и заканчиваться слешем "/" (строка: 71):

  1. 'upload_dir' => '/uploads/',

Зададим путь к папке для загрузки файлов относительно папки responsivefilemanager, в нашем случае эта папка находится по пути /backend/web/plugins/tinymce/plugins/responsivefilemanager, так как uploads будет в корне сайта (/frontend/web/uploads/), то пишем следующий путь (строка: 81):

  1. 'current_path' => '../../../../../frontend/web/uploads/',

Зададим путь к папке для загрузки миниатюр относительно папки responsivefilemanager. По аналогии с примером выше (строка: 92):

  1. 'thumbs_base_path' => '../../../../../frontend/web/uploads_thumbs/',

Дополнительные настройки

Установим максимальный размер загружаемого файла в мегабайтах (строка: 134):

  1. 'MaxSizeUpload' => 8,

Установим язык интерфейса (строка: 142):

  1. 'default_language' => 'ru',

Подключаем RESPONSIVE filemanager к TiniyMCE

Если вы использовали настройку ЧПУ как описано здесь: .htaccess для Yii 2 advanced, то в корневом файле .htaccess после строки RewriteRule ^admin/img/(.*)$ backend/web/img/$1 [L] добавьте строку:

  1. RewriteRule ^admin/plugins/(.*)$ backend/web/plugins/$1 [L]

Так же, в корневой .htaccess добавим правило обращения к загруженным файла, после строки (19) RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]:

  1. RewriteRule ^uploads/(.*)$ frontend/web/uploads/$1 [L]
  2. RewriteRule ^uploads_thumbs/(.*)$ frontend/web/uploads_thumbs/$1 [L]

Теперь во view можно подключить TinyMCE с файловым менеджером:

  1. <?php
  2. //...
  3. use dosamigos\tinymce\TinyMce;
  4.  
  5. //...
  6. $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
  7.  
  8. //..
  9. echo $form->field($model, 'text')->widget(TinyMce::className(), [
  10. 'options' => ['rows' => 6],
  11. 'language' => 'ru',
  12. 'clientOptions' => [
  13. 'plugins' => [
  14. 'advlist autolink lists link charmap hr preview pagebreak',
  15. 'searchreplace wordcount textcolor visualblocks visualchars code fullscreen nonbreaking',
  16. 'save insertdatetime media table contextmenu template paste image responsivefilemanager filemanager',
  17. ],
  18. 'toolbar' => 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | responsivefilemanager link image media',
  19. 'external_filemanager_path' => '/admin/plugins/responsivefilemanager/filemanager/',
  20. 'filemanager_title' => 'Responsive Filemanager',
  21. 'external_plugins' => [
  22. //Иконка/кнопка загрузки файла в диалоге вставки изображения.
  23. 'filemanager' => '/admin/plugins/responsivefilemanager/filemanager/plugin.min.js',
  24. //Иконка/кнопка загрузки файла в панеле иснструментов.
  25. 'responsivefilemanager' => '/admin/plugins/responsivefilemanager/tinymce/plugins/responsivefilemanager/plugin.min.js',
  26. ],
  27. ]
  28. ]);

Теперь в TinyMCE появился файловый менеджер и кнопка загрузки изображения в диалоговом окне:

Файловый менеджер находится по пути "Вставить => Insert file" или с помощью сочетания горячих клавиш Ctrl + E.

Дополнительные настройки tinyMCE

Чтобы путь к картинкам сохранялся как абсолютный, а не относительный, т.е. от корня сайта добавим параметр relative_urls в массив clientOptions:

  1. echo $form->field($model, 'text')->widget(TinyMce::className(), [
  2. 'options' => ['rows' => 6],
  3. 'language' => 'ru',
  4. 'clientOptions' => [
  5. 'plugins' => [
  6. 'advlist autolink lists link charmap hr preview pagebreak',
  7. 'searchreplace wordcount textcolor visualblocks visualchars code fullscreen nonbreaking',
  8. 'save insertdatetime media table contextmenu template paste image responsivefilemanager filemanager',
  9. ],
  10. 'toolbar' => 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | responsivefilemanager link image media',
  11. 'external_filemanager_path' => '/admin/plugins/responsivefilemanager/filemanager/',
  12. 'filemanager_title' => 'Responsive Filemanager',
  13. 'external_plugins' => [
  14. //Иконка/кнопка загрузки файла в диалоге вставки изображения.
  15. 'filemanager' => '/admin/plugins/responsivefilemanager/filemanager/plugin.min.js',
  16. //Иконка/кнопка загрузки файла в панеле иснструментов.
  17. 'responsivefilemanager' => '/admin/plugins/responsivefilemanager/tinymce/plugins/responsivefilemanager/plugin.min.js',
  18. ],
  19. 'relative_urls' => false,
  20. ]
  21. ]);

Чтобы уменшить код подключения TinyMCE и RESPONSIVE filemanager можно настройки подключать глобально. Для этого откройте файл /backend/config/bootstrap.php и вставьте следующий код:

  1. <?php
  2. Yii::$container->set('dosamigos\tinymce\TinyMce', [
  3. 'language' => 'ru',
  4. 'options' => ['rows' => 20],
  5. 'clientOptions' => [
  6. 'plugins' => [
  7. 'advlist autolink lists link charmap hr preview pagebreak',
  8. 'searchreplace wordcount textcolor visualblocks visualchars code fullscreen nonbreaking',
  9. 'save insertdatetime media table contextmenu template paste image responsivefilemanager filemanager',
  10. ],
  11. 'toolbar' => 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | responsivefilemanager link image media',
  12. 'external_filemanager_path' => '/admin/plugins/responsivefilemanager/filemanager/',
  13. 'filemanager_title' => 'Responsive Filemanager',
  14. 'external_plugins' => [
  15. 'filemanager' => '/admin/plugins/responsivefilemanager/filemanager/plugin.min.js',
  16. 'responsivefilemanager' => '/admin/plugins/responsivefilemanager/tinymce/plugins/responsivefilemanager/plugin.min.js',
  17. ],
  18. 'relative_urls' => false,
  19. ]
  20. ]);

Теперь во view подключайте TinyMCE следующим образом:

  1. <?= $form->field($model, 'text')->widget(TinyMce::className()); ?>

Вот и все, приятной работы с TinyMCE и файловым менеджером RESPONSIVE filemanager в Yii2.

Для тех кто использует Yii2 basic подключение TinyMCE и файлового менеджера для загрузки изображений и файлов используя данную инструкцию не составит особого труда.

Источник: Перейти
Комментарии (0):
Чтобы оставить свой комментарий, необходимо пройти аутентификацию