О настройках CKeditor 4.x

+41
7.06K
О настройке интерфейса редактора CKeditor 4.x.

Причина написания этой заметки

Давно хотел перепостить свои комменты, сделанные мной на этом ресурсе. Автор этого плагина — Feodor, так что все лавры должны принадлежать ему. Я лишь дополняю его материал своей информацией.

О плагине p_ckeditor

Плагин устанавливается на iCMS v.1.10.3 без проблем, содержащийся в нем эдитор прекрасно работает. Этот эдитор более продвинут, чем штатный, который был неоднократно замечен в вырезании тегов, которые не он сам создал.(этакий ревнивец) laugh. Новый эдитор предлагает больше возможностей для редактирования и меньше загрязняет код, чем штатный. У него в комплекте четыре темы оформления (moono, moono-dark, ozone, silver), можете выбрать ту, которая вам больше по вкусу, или сотворить свою. По умолчанию прописана moono, вы можете переключить тему из админки плагина, прописав ее название в поле "Тема редактора". Если сотворите еще одну, не забудьте поделиться!
Предупреждение.По многочисленным сообщениям, у данного редактора возникают конфликты с Универсальным Каталогом. Конфликт заключается в том, что из контента вырезаются все HTML-теги форматирования, и на страницу попадает только неотформатированный текст. Причина не в редакторе и не в УК, причина в версии php, поскольку на Денвере эта связка ckeditor+УК работает. Просьба заинтересованным лицам уделить внимание этой проблеме. Если кто-то может помочь, пишите мне в личку, я укажу точку в УК, в которой возникает трабла. Если ничего не найдем, можно пойти по тому варианту, который избрал я — написал костыль к УК. Хоть и некрасиво, но работает.

Настройка интерфейса редактора.

Разный вид интерфейса для разных пользователей

Например, вы решили дать возможность редактирования статей трем группам пользователей. Пусть это будут админы, редакторы и модераторы. Однако вы считаете нужным дать каждому разные возможности редактирования. Для этого вы создаете в папке plugins/p_ckeditor/editor/ три файла: admin_config.js, editor_config.js и moder_config.js. Содержание этих файлов аналогично и будет рассмотрено чуть позже. В стандартном плагине, который вы скачали, два файла уже есть — это admin_config.js и user_config.js

Для подключения этих конфигов к плагину следует изменить в файле plugins/p_ckeditor/plugin.php значение переменной $conf. На 54 строчке ей присваивается значение по умолчанию
  1. $conf = 'user';
Ниже пишем:
  1. if ($inUser->is_admin) $conf = 'admin';
И строчки (тут я думаю, сами сообразите) которые присваивают переменной $conf значения editor или moder, если юзер относится к группе редакторов или модераторов. Например, на свежеустановленном сайте id групп у вас такие: 7 — у редакторов и 9 — у модераторов. Если вы id групп не меняли, можете сделать так:
  1. $id_group = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$inUser->id}'", 'group_id');
  2. if($id_group == 7){$conf = 'editor';}
  3. if($id_group == 9){$conf = 'moder';}
Естественно, это не единственно возможный способ присвоить переменной значение, можете сделать так, как вам удобно.

Что должно быть в конфигах

Интерфейс эдитора состоит из секций. Секции можно переставить местами и расположить на разных строчках. Каждая секция содержит кнопки.
Для того, чтобы включить ВСЕ секции и ВСЕ кнопки надо в конфиге написать такой код:
  1. config.toolbar = [
  2. {name: 'document', items: [ 'Source','-','Save','NewPage','DocProps','Preview','Print','-','Templates' ] },
  3. {name: 'clipboard', items: [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },
  4. {name: 'editing', items: [ 'Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt' ] },
  5. {name: 'forms', items: [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
  6. '/',
  7. {name: 'basicstyles', items: [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] },
  8. {name: 'paragraph', items: [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] },
  9. {name: 'links', items: [ 'Link','Unlink','Anchor' ] },
  10. {name: 'insert', items: [ 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak' ] }, '/',
  11. {name: 'styles', items: [ 'Styles','Format','Font','FontSize' ] },
  12. {name: 'colors', items: [ 'TextColor','BGColor' ] },
  13. {name: 'tools', items: [ 'Maximize', 'ShowBlocks','-','About' ] }
  14. ];
Каждая секция начинается с name и содержит имя секции, например, name: 'editing'. Убрав секцию из конфига, вы убираете с интерфейса редактора секцию целиком. Будте осторожны с последней секцией: если вы ее уберете, не убрав запятой с предпоследней, у вас эдитор просто выключится.
Перенос строки происходит с помощью кода '/'
Каждая секция содержит перечисление кнопок. Этот список начинается с items и внутри фигурных скобок заключает имена кнопок, поддерживаемых эдитором. Если вы добавите кнопку, она отобразиться, но работать не будет, поскольку надо в код эдитора добавлять для нее действие. Зато, убрав кнопку из секции, вы ненужную кнопку просто выключаете.
Если перенести в конфиге имя кнопки из одной секции в другую, при запуске эдитора вы увидите кнопку на новом месте интерфейса.
Внутрь секции можно вставить визуальный разделитель между кнопками, вставив код '-'.

Пользуясь этими правилами, вы легко настроите конфиги для любого юзера. Оставьте им те кнопки, которые, по вашему мнению, им нужны и пусть пользуются.

Еще кое что о конфигурационных файлах редактора.

Приведенный выше массив config.toolbar=[...]; не единственный возможный, который поддерживается эдитором. Точно так же воспринимается массив config.toolbarGroups=[...]; Он по структуре точно такой же, только перед названиями кнопок стоит не items, а groups. Главное, чтобы у вас в одном файле был один из возможных массивов: или первый или второй, но не оба. Пример массива config.toolbarGroups и сейчас лежит в файле user_config.js, который вы получите при загрузке плагина.

Еще один способ отключить ненужные кнопки в конфиге, это перечислить их названия в методе config.removeButtons, например:
  1. config.removeButtons = 'Underline,Subscript,Superscript,Flash,Iframe,SpecialChar,Pagebreake';
Даже если названия кнопок перечислены в массивах config.toolbar или config.toolbarGroups, при упоминании в методе config.removeButtons кнопка отключается.

Краткая инструкция по добавлению тем.

Добавляю для "тех кто в танке" краткую инструкцию по добавлению тем редактора, хотя чего уж проще:
1. Идем на сайт производителя редактора и открываем страничку skins
2. Выбираем тему и щелкаем по картинке-превьюшке, которая показывает внешний вид интерфейса. Вас перебросит на страничку этого скина, где есть кнопка "Download".
3. Жмете на эту кнопку и указываете, куда сохранить архив.
4. В архиве лежит папка с именем темы редактора. Распаковываете архив.
5. Перебрасываете папку с темой в папку эдитора plugins/p_ckeditor/editor/skins/
6. Идете в админку Дополнения->Плагины, ищите свой плагин и жмете на его шестеренку. Попадаете в админку плагина.
7. В поле "Тема редактора" прописываете имя темы редактора. Она совпадает с именем папки, которую вы только что загрузили.
8. Жмете на кнопку "Сохранить"
9. Открываете для редактирования любую статью и наслаждаетесь своей заоблачной крутостью по смене тем редактора)))

Удачи в программировании!
0
Max Max 10 лет назад #
Обязательно попробую, спасибо!
0
Lora Lora 10 лет назад #
Здравствуйте, а что сделать, что бы тему добавить, а то какие то мрачные родные.Пробовал залить папку с темой kama в ../skins не подхватывает.Заменял ckeditor.js на файл с темы, не идёт. Видно ещё где то прописать надо,но не нашёл где.
+1
Странник Странник 10 лет назад #
Вы хотите свою тему создать? Темы создаются в папке plugins/p_ckeditor/editor/skins/
Если вы залили папку с темой рядом с другими темами (их там четыре), прописали имя новой темы в админке плагина (поле "Тема редактора"), и эдитор их "не подхватил" при перезагрузке, значит, ваша тема не годится. Увы... Удаляйте ее и ищите другую.
0
Lora Lora 10 лет назад #
Эта тема с оффсайта данного плагина
+1
Странник Странник 10 лет назад #
Плагина или эдитора? Дело в том, что Федор сделал плагин для Инстанта из внешнего эдитора, за что ему честь и хвала. Оффсайт плагина или оффсайт эдитора? Откуда брали тему?
0
Lora Lora 10 лет назад #
Сори,с оффсайта едитора.
+1
Странник Странник 10 лет назад #
Ну что я скажу....если не подходит, значит она к этому эдитору не подтыкается. Ищите другую, или правьте скачанную по образцу работающих тем. Может получится. Я этим заниматься точно не буду)
0
Lora Lora 10 лет назад #
Понятно.Я не в коим разе и не хотел этого.Мне было непонятно почему тема не подключается.Я просмотрел все файлы плагина, но так и не нашёл где вообще подключаются темы.Нашёл где по умолчанию задаётся, да в ckeditor.js прописана тема moono и всё.Поэтому и спросил.Извините,если что.
+1
Странник Странник 10 лет назад #
Уж не знаю, как вы устанавливали, тему, но у меня тема "kama" установилась сразу и без заморочек. Минута делов. Установил ради интереса, эта тема действительно приятнее.
Не знаю, как можно было НЕ поставить))))
Надеюсь, без обид.
0
Lora Lora 10 лет назад #
Да какие обиды, если она не встаёт.Видно может где то с правами или...попробую на хостинге.
+1
Lora Lora 10 лет назад #
Корче, встало. Окольными путями. Заменил содержимое папки /editor на родное с оффсайта с папкой /kama. Теперь встала. Хрен его знает, может какой файл при закачке повредило.
0
Max Max 10 лет назад #
Уважаемый Странник, еще раз спасибо за плагин.
Если кликнуть в поле ввода текста, то курсор не отображается сразу, а становится виден после начала набора текста. Это сбивает с толку пользователей. Вы не замечали этого? Возможно есть решение?
-1
letsgo letsgo 10 лет назад #
Проблема Скедитора в том, что он режет все в тексте каталога. Неплохо если бы глянули.
+1
Max Max 10 лет назад #
Да в каталоге действительно ерунда. Нельзя цвет, фон текста, поставить ссылку, загрузить изображение... Возможно что-то еще, этого пока хватило.
+1
Странник Странник 10 лет назад #
letsgo и Max, я действительно, столкнулся с этой проблемой на одном из сайтов, который делал. Причем, потратил на обнаружение причины проблеиы значительно большее время, чем расчитывал, но красиво решить не смог. Тогда я обошелся, по своему обыкновению, костылем, написав хак к УН.

А проблема у меня заключалась в том, что стандартная функция unserialise() - да,да, она! при получении текста статьи из БД, просто выводила пустую строку.

Я думал, это проблема у меня одного, поскольку на локальном сервере ckeditor и УК прекрасно ладили. Проблема началась, когда я выложил сайт на хостинг. Тогда и пришлось мастерить костыль. Что за костыль, говорить не хочу, ибо получилось некрасиво. У меня УК с костылем и этот эдитор работают, клиент доволен, больше времени на это тратить не могу. Такие дела)))
+1
Странник Странник 10 лет назад #
Уточнение - unserialise() выводила не пустую строку, а "обдирала" все теги форматирования (цвет текста, ссылки и т.д), пропуская голый текст. То есть признаки были такие же, как у Мах'а. Сорри, запямятовал за давностью)))

Может, кто-то, кто сильнее меня в программировании, решит эту проблему? Эдитор-то зачетный!
+1
Max Max 10 лет назад #
Согласен, эдитор зачетный, но пока придется повременить с его использованием.
0
Майкл Майкл 10 лет назад #
Под 1.10.1 решение есть?
0
Странник Странник 10 лет назад #
Да, этот плагин работает под 1.10.1 с учетом вышестоящего замечания.
+1
sotastroy sotastroy 10 лет назад #
Очередная тема про редактор. С очередным прошением к программистам - допилить. Может уже пора обратить внимание разработчикам на проблему с редактором? Все-таки в сайтах самое главное - контент, а если его добавлять проблемно, то это не дело...
Странник, спасибо, будем пробовать этот плагин. Жаль проблемы с УК..
0
Странник Странник 10 лет назад #
Проблемы, как я уже сказал, не с УК. Проблема, скорее (у меня такая гипотеза) с версией php. На Денвере все работает, на хостинге - нет. По причине отсутствия времени не могу раскопать причину с последующим устранением. Я и так на обнаружение причины недопустимо много времени потратил. Потому и обратился.
0
livecom livecom 10 лет назад #
А где взять этот плагин для версии 1.10.3? На том сайте вроде бы только для 1.10.1. Есть ссылка на скачку?
0
Странник Странник 10 лет назад #
плагин есть плагин...он одинаков что для 1.10.1, что для 1.10.3 так что качайте и юзайте смело....с учетом вышестоящего замечания, конечно.
-1
Юрий Юрий 10 лет назад #
Возникла такая проблема, текст анонса и основого текста слекиваются, а поидеи после анонса должн быть теш </br> Подскажите где копать?
0
Странник Странник 10 лет назад #
Попробуйте в тексте после анонса вставить пустую строку, нажав Enter. Если хитрый эдитор ее вырежет, попробуйте вставить </br> руками, нажав кнопку "Источник". Тогда вы увидите текст вместе с тегами, которые туда напихивает редактор. Если вы вставили что-то туда, редактор это удалять не будет.
0
Странник Странник 10 лет назад #
Как вариант, попробуйте вставить в "Источник" <p>&nbsp;</p>
0
Юрий Юрий 10 лет назад #
решил немного по другому так как редактор постоянно вырезает тег </br>, в настройка поставил так:
config.enterMode = CKEDITOR.ENTER_P;
config.shiftEnterMode = CKEDITOR.ENTER_BR;

Но пришлось отказаться от редактора, так как с Афишей он не дружит, а разбираться сейчас нет времени.
0
MadFox MadFox 10 лет назад #
А как можно подключить к данному визуальному редактору дополнительные плагины?
К примеру я скачал плагин spoiler для данного редактора. Куда мне его прописать? или как правильно подключить к редактору?
+1
MadFox MadFox 10 лет назад #
В общем разобрался ))). Метод топорный на мой взгляд. Но имеет права на жизнь.
Если кому будет интересно сообщите мне в личку я попробую написать небольшую пошаговую инструкцию.
+1
MadFox MadFox 10 лет назад #
Попробую описать принцип по которому я добавлял плагины к визуальному редактору
1. Идем на сайт визуального редактора
в первом пункте 1. Choose preset выбираем Basic
в втором 2. Select your plugins and skin данный раздел представлен двумя блоками:
Selected plugins(Выбранные плагины) и Available plugins(Доступные плагины) ищем и добавляем плагин который хотите добавить я добавлял по одному что бы проще было работать с кодом. Скачиваем сформированный редактор.
2.Далее в скачанном редакторе идем в папку plugins и берем от туда папку нужного нам плагина забрасываем его в наш редактор.
Создаем в папке плагина папку icons в нее позже положим иконку плагина для отображения на панели если она есть возможно ее даже придется самому создать в моём случаи я ее вырезал
3.Самая кропотливая часть)) открываем файл ckeditor.js (который мы скачали только что) и ищем в нем секцию с описанием плагина к примеру начало секции для плагина spoiler выглядит так:
CKEDITOR.plugins.add("spoiler"
копируем всю секцию в наш файл ckeditor.js (тот что в уже установленном на сайте редакторе) в этом же файле ищем строку: CKEDITOR.config.plugins= и добавляем в нее название нашего плагина (в моем случае spoiler)
4. Ну и включаем отображение сей кнопки в редакторе по принципу описанному в этой статье
На данный момент описанный мной метод подключения возможно не является корректным.
К примеру у меня спойлер подключился и работает пока находишься в визуальном редакторе но при сохранении статьи спойлера нет (точнее его код добавляется) если смотреть через Исходный код страницы но он не сворачивается и разворачивается. Не исключаю что такая трабла только с спойлером а с другими дополнениями все ок.
В общем требуется детальное рассмотрение данного метода
0
Странник Странник 10 лет назад #
Спасибо, друг, в ближайшее время постараюсь повторить вашу методику. Действительно, получается через задний проход перемещение со Смоленского вокзала на Ярославский через Гонолулу. Посмотрю, что можно сделать.
0
MadFox MadFox 10 лет назад #
Приветствую. Удалось ли чего то выяснить выявить и т.д. ?
Или пока не занимались данным вопросом?
0
Странник Странник 10 лет назад #
Откровенно говоря, не занимался. И, откровенно говоря, вряд ли буду, в связи с появлением Live Editor.

Еще от автора

Адаптация компонента "Закладки" от 19 января 2011 к коробочной версии 1.10.7
На форуме появилась тема с пожеланиями адаптировать довольно старый компонент "Instant Bookmarks" Fuze к современным реалиям.
Утилита "Садовод" для версии InstantCMS 1.10.7.008
В этой краткой заметке описывается утилита "Садовод" для ремонта деревьев версии InstantCMS 1.10.7.008.
Изменение компонента "Баннеры" для будущей  версии 1.10.7.008
Данная статья рассказывает всем ждущим новую версию 008, что нового ожидается в будущем релизе версии 1.10.7.008.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.