CKEditor
Установка и настройка CKEditor в Drupal.
- Модуль для Drupal
- Сам CKEditor
- CDN
- Тонкая настройка и загрузка только необходимого
- Настройка
- Отключить CKEditor в полях админки (неактуально для 7?)
- Фильтры ввода
- Загрузка картинок
- Дополнительные плагины
drush dl ckeditor video_filter && drush -y en ckeditor video_filter drush l10n-update-refresh && drush l10n-update
admin/config/content/ckeditor/editg — в секции «Расширенные настройки» — «Путь к CKEditor» ввести:
//cdn.ckeditor.com/4.4.5.1/standard
Номер версии взять на http://cdn.ckeditor.com/
Прежде, чем скачивать CKEditor, можно его сконфигурировать, чтобы убрать мусор и добавить необходимое.
- http://ckeditor.com/download
- Выбрать «Or let me customize CKEditor» и нажать «Customize & Download CKEditor»
- «Choose preset» — «Standard»
- Select your plugins and skin
- Убрать из левой колонки:
- About CKEditor
- Accessibility Help
- SpellCheckAsYouType (SCAYT)
- WebSpellChecker
- Добавить из правой колонки:
- Content Templates
- Justify
- List Style
- Show Blocks
- Вместе с плагинами справа будут автоматически добавлены такие плагины: Dialog, Dialog User Interface, Fake Objects, Floating Panel, Indent / Outdent, List Block, Menu, Panel, Popup, Rich Combo, UI Button
- Убрать из левой колонки:
- Finalize and download — добавить справа языки интерфейса.
Содержимое архива нужно положить внутрь папки модуля Drupal /sites/all/modules/ckeditor в еще одну папку ckeditor — то есть путь будет такой:
/sites/all/modules/ckeditor/ckeditor/
Там в папке уже лежит файл COPY_HERE.txt, который как бы намекает.
Настройки CKEditor сохраняются в виде профилей здесь: admin/config/content/ckeditor
По умолчанию есть 3 профиля:
- Advanced
- Full
- CKEditor Global Profile
Сначала настроим глобальный профиль:
admin/config/content/ckeditor/editg
- Use toolbar Drag&Drop feature — [*] Отключено
В качестве основного рабочего профиля будем использовать профиль Advanced:
admin/config/content/ckeditor/edit/Advanced
admin/config/content/ckeditor/editg — в секции «Расширенные настройки — Путь к CKEditor» ввести:
//cdn.ckeditor.com/4.4.5.1/standard
Номер версии взять на http://cdn.ckeditor.com/
Модуль для Drupal: https://www.drupal.org/project/ckeditor
Его распаковать как обычно в Друпале — /sites/all/modules/ckeditor/
Включить модуль: /admin/build/modules
Сам CKEditor: http://ckeditor.com/download. Прежде, чем скачивать, нужно его сконфигурировать, чтобы убрать ненужное и добавить нужное.
- Выбрать «Or let me customize CKEditor» и нажать «Customize & Download CKEditor»
- «Choose preset» — «Standard»
- Select your plugins and skin
- Убрать из левой колонки:
- About CKEditor
- Accessibility Help
- SpellCheckAsYouType (SCAYT)
- WebSpellChecker
- Добавить из правой колонки:
- Content Templates
- Justify
- List Style
- Show Blocks
- Вместе с плагинами справа будут автоматически добавлены такие плагины: Dialog, Dialog User Interface, Fake Objects, Floating Panel, Indent / Outdent, List Block, Menu, Panel, Popup, Rich Combo, UI Button
- Убрать из левой колонки:
- Finalize and download — добавить справа языки интерфейса.
Содержимое архива нужно положить внутрь папки модуля Друпала в еще одну папку ckeditor — то есть путь будет такой: /sites/all/modules/ckeditor/ckeditor/ (там, в папке модуля, уже лежит файл COPY_HERE.txt, который как бы намекает).
Помимо официальной сборки CKEditor, потребуются еще плагины:
- upload_image — самописный простой загрузчик картинок на сайт.
- video_filter — вставка видео YouTube с помощью специального тэга [video: ].
- htmlbuttons — плагин для создания простых кнопок для вставки заранее заготовленного текста или HTML кода. Например, кнопка дя вставки спецтэга [video: ].
Установить дополнительные модули Drupal:
- Noindex External Links — фильтр для добавления внешним ссылкам атрибута «nofollow».
Включить на странице модуля/admin/settings/noindex_external_links: "Add attribute rel="nofollow" to links". По умолчанию «nofollow» будет добавляться всем ссылкам, кроме собственного домена. - Video Filter — фильтр для добавления видео
Настроить «Форматы ввода» /admin/settings/filters: «Filtered HTML» → «настроить», включить фильтры:
- Noindex External Links filter
- HTML корректор
- Video Filter
- Преобразователь переводов строки
- Фильтр HTML
«Filtered HTML» → «настроить» → перейти на вкладку «Настроить» («Конфигурировать Filtered HTML»):
- отключить «Показывать справку HTML» (все равно обычных пользователей это только пугает)
- отключить «Защита от спамерских ссылок»
- в опциях «Video filter» указать:
- размер — 640 х 360
- Default autoplay setting — нет
- Related videos setting — нет
- Use HTML5 — да
/admin/settings/ckeditor Visibility settings → Use inclusion or exclusion mode → Exclude
Fields to exclude/include:
*admin/* *edit.edit-nodewords-description
1. В корне сайта создать папку /images/ с правами 777.
2. Создать файл /sites/all/modules/ckeditor/plugins/upload_image/upload.php с таким кодом:
<?php
$callback = $_GET['CKEditorFuncNum'];
$file_name = $_FILES['upload']['name'];
$file_name_tmp = $_FILES['upload']['tmp_name'];
$file_new_name = $_SERVER['DOCUMENT_ROOT'].'/images/';
$full_path = $file_new_name.$file_name;
$http_path = '/images/'.$file_name;
$error = '';
if( move_uploaded_file($file_name_tmp, $full_path) ) {
} else {
$error = 'Some error occured please try again later';
$http_path = '';
}
echo "<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction(".$callback.", \"".$http_path."\", \"".$error."\" );</script>";
?>
3. В файле /sites/all/modules/ckeditor/ckeditor.config.js перед закрывающей скобкой }; добавить строку с путем к файлу upload.php:
// Image uploader config.filebrowserUploadUrl = '/sites/all/modules/ckeditor/plugins/upload_image/upload.php';
Это нужно потому, что Drupal из соображений безопасности в режиме ввода «Filtered HTML» по умолчанию блокирует тэги <iframe> и <object>. А если использовать модуль «WYSIWYG Filter» (который нужен, чтобы управлять атрибутом ссылок «nofollow»), то в нем вообще никак нельзя разрешить эти тэги.
- Скачать модуль для Drupal: https://www.drupal.org/project/video_filter
- Установить в Drupal.
Все, теперь видео из YouTube можно вставлять, добавляя ссылку в спецтэг [video:] — например, так: [video:https://www.youtube.com/watch?v=9bZkp7q19f0] или так: [video:http://youtu.be/9bZkp7q19f0]
В папке модуля /sites/all/modules/video_filter/editors/ckeditor есть плагин для CKEditor, но мы им пользоваться не будем, слишком громоздкий. Вместо этого мы с помощью плагина htmlbuttons сделаем простую кнопку для вставки тэга [video:].
Скачать: http://ckeditor.com/addon/htmlbuttons
Распаковать в папку /sites/all/modules/ckeditor/plugins/htmlbuttons
Положить в эту же папку файлы иконок для кнопок.
Добавить в файл ckeditor.config.js строки:
config.htmlbuttons = [
{
name:'videofilter',
icon:'youtube.png',
html:'[video: ]',
title:'Ссылка на видео YouTube'
},
{
name:'obzor',
icon:'obzor-15.png',
html:'<a href="http://www.obzor.lg.ua/">Луганский Обзор</a>',
title:'Ссылка на Обзор'
}
];
Добавить кнопки на панель инструментов профиля CKEditor: /admin/settings/ckeditor/edit/Advanced -> «Editor appearance»:
['videofilter','obzor'],
В Drupal: /admin/config/content/formats/manage/full_html
[ ['PasteText'], ['Undo'], ['Format'], ['RemoveFormat','Bold','Italic','-','Link','-','Blockquote','-','NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Image','videofilter','Table','obzor'], ['Maximize'], ['Source'] ]
- AJAX uploader http://xdan.ru/project/ckplugins/#uploader
1.
В файл ckeditor.config.js добавить строки:
CKEDITOR.editorConfig = function(config) {
...
config.disableNativeSpellChecker = false; // включаем браузерную проверку орфографии
config.allowedContent = true; // отключаем режим Advanced Content Filter (фильтрация опасных тэгов)
...
};
1. В админке заходим: /admin/settings/ckeditor -> профиль Advanced -> редактировать.
2. «Security» — должен быть выбран «Filtered HTML» или иной, который используется у вас для ввода с ограничением по тегам.
3. «Cleanup and output» — поправить «Font formats» (список стилей):
p;h2;h3;h4;h5;h6
— то есть убираем div, address, pre и h1.
4. «Дополнительные настройки» («Advanced options»):
— «Force pasting as plain text» — «Включено»;
— в блоке «Пользовательская конфигурация JavaScript» вводим:
config.allowedContent = true; // отключаем режим Advanced Content Filter (фильтрация опасных тэгов) config.removePlugins = 'scayt'; // отключаем ненужные плагины config.scayt_autoStartup = false; // отключаем встроенную в CKEditor проверку орфографии
1. Настроить типовую панель кнопок
Файл drupal/sites/all/modules/ckeditor/ckeditor.config.js
// This toolbar should work fine with "Filtered HTML" filter
config.toolbar_DrupalFiltered = [
['PasteFromWord','PasteText','RemoveFormat'],
['Format'],
['Bold','Italic','Underline'],
['NumberedList','BulletedList','Outdent','Indent','Blockquote','JustifyLeft','JustifyCenter','JustifyRight'],
['Link','Unlink'],
['Image','Table','SpecialChar'],
['DrupalBreak', 'DrupalPageBreak'],
['Maximize']
];
2. Настроить минимальную панель кнопок
Там же:
config.toolbar_DrupalBasic = [ [ 'Format', '-', 'Bold', 'Italic', '-', 'NumberedList','BulletedList', '-', 'Link', 'Unlink', 'Image' ] ];
3. Убрать лишние вкладки в диалогах добавления ссылки и картинки
Там же, добавить в самый конец файла:
CKEDITOR.on( 'dialogDefinition', function( ev ){
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
if ( dialogName == 'link' ){dialogDefinition.removeContents( 'advanced' );dialogDefinition.removeContents( 'target' );dialogDefinition.removeContents( 'upload' );}
if ( dialogName == 'image' ){dialogDefinition.removeContents( 'advanced' );dialogDefinition.removeContents( 'Link' );}
if ( dialogName == 'flash' ){dialogDefinition.removeContents( 'advanced' );}
4. Убрать annoing отступы и переводы строк внутри тэгов
Там же, добавить в конец файла:
CKEDITOR.on( 'instanceReady', function( ev ) {
$(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'div', 'address']).each(function(i, tag) {
ev.editor.dataProcessor.writer.setRules(tag,
{
indent : false,
breakBeforeOpen : true,
breakAfterOpen : false,
breakBeforeClose : false,
breakAfterClose : true
});
});
ev.editor.dataProcessor.writer.setRules( 'pre',
{
indent : false,
breakBeforeOpen : true,
breakAfterOpen : true,
breakBeforeClose : false,
breakAfterClose : true
});
ev.editor.dataProcessor.writer.setRules( 'li',
{
indent : false,
breakBeforeOpen : true,
breakAfterOpen : false,
breakBeforeClose : false,
breakAfterClose : true
});
});
5. Сократить список стилей
Друпал -> /admin/settings/ckeditor -> Поля профилей -> редактировать.
Cleanup and output -> Font formats:
h2;h3;h4;p;pre;address
- Хорошая инструкция с примерами настроки использования CKEditor в Drupa, в т.ч. как написать/подключить плагин
- Расширяем функционал CKEditor