Подсветка синтаксиса кода в Drupal. Настройка FCKEditor + Syntax Highlighter

Искал на днях очередные маны. На одном из сайтов понравилась подсветка синтаксиса кода. В плане функциональности - оно, вроде как, толку нету - всё равно люди копипастом пользуются, но смотрится неплохо. Вот решил на нашем сайте организовать аналогичное. Первым делом начал гуглить. Нашлось 2 варианта: TinyMCE + GeSHi и FCKEditor + Syntax Highlighter. Т.к. на нашем сайте прикручен именно FCKEditor - будем рассматривать настройку связки именно FCKEditor + Syntax Highlighter. Итак, приступим.

Нам понадобится:

  1. Уже установленный, настроеный сайт на Drupal 6.X
  2. FCKeditor 2.6.6. Качаем со странички или напрямую
  3. Модуль для Drupal - FCKeditor 6.x-2.1. Качаем со странички или по ссылке напрямую
  4. Непосредственно сам Syntax Highlighter. Качаем отсюда
  5. Модуль для Drupal - Systax Highlighter 6.x-1.22. Качаем со странички или сразу по ссылке
  6. Плагин для FCKeditor - Systax Highlighter 2.1.0. Качаем отсюда (на всякий пожарный приаттачил его к статье)
cd /usr/local/src/
mkdir hl
cd /usr/local/src/hl/
wget downloads.sourceforge.net/project/fckeditor/FCKeditor/2.6.6/FCKeditor_2.6.6.tar.gz?use_mirror=citylan ftp.drupal.org/files/projects/fckeditor-6.x-2.1.tar.gz alexgorbatchev.com/downloads/grab.php?name=sh ftp.drupal.org/files/projects/syntaxhighlighter-6.x-1.22.tar.gz www.psykoptic.com/userfiles/files/FCKEditor-syntaxhighlight_2.1.0.zip
mv grab.php?name=sh syntaxhighlighter_2.1.364.zip

Распакуем архивы и раскидаем их по каталогам. Сначала раскидаемся с модулями для Drupal.

tar xzfv fckeditor-6.x-2.1.tar.gz
tar xzfv syntaxhighlighter-6.x-1.22.tar.gz
mv fckeditor /[путь]/[до]/[корня]/[сайта]/modules/
mv syntaxhighlighter /[путь]/[до]/[корня]/[сайта]/modules/

Распакуем FCKeditor и Systax Highlighter и раскидаем их по каталогам. Обратите внимание, что FCKeditor кладётся в
/[путь]/[до]/[корня]/[сайта]/modules/fckeditor/
а syntaxhighlighter в каталог
/[путь]/[до]/[корня]/[сайта]/sites/all/libraries/

tar xzfv FCKeditor_2.6.6.tar.gz
mv -f fckeditor/* /var/www/linux16.net/modules/fckeditor/fckeditor
rm -rf fckeditor
mkdir -p /[путь]/[до]/[корня]/[сайта]/sites/all/libraries/syntaxhighlighter
unzip syntaxhighlighter_2.1.364.zip -d /[путь]/[до]/[корня]/[сайта]/sites/all/libraries/syntaxhighlighter

Распакуем и положим плагин FCKeditor - Systax Highlighter

unzip FCKEditor-syntaxhighlight_2.1.0.zip -d /[путь]/[до]/[корня]/[сайта]/modules/fckeditor/plugins

Теперь есть один ньюанс. Разработчик данного модуля, включил в выпадающее меню не все доступные языки. Остались недоступными Bash, erlang и некоторые другие. Чтобы их включить, отредактируйте файл
/[путь]/[до]/[корня]/[сайта]/modules/fckeditor/plugins/syntaxhighlight2/dialog/fck_syntaxhighlight.html
Найдите блок

                <td width="372">
                    <select id="ddLang">
                        <option value="c++">C++</option>
                        <option value="csharp">C# </option>
                        <option value="css">CSS </option>
                        <option value="delphi">Delphi</option>
                        <option value="java">Java </option>
                        <option value="jscript">Java Script</option>
                        <option value="php">PHP</option>
                        <option value="python">Python</option>
                        <option value="ruby">Ruby</option>
                        <option value="sql">SQL</option>
                        <option value="vb">VB.NET</option>
                        <option value="xhtml">XML/HTML</option>
                    </select>
                </td>

И добивьте нужные языки. Их список и список алиасов можно найти в каталоге
/[путь]/[до]/[корня]/[сайта]/sites/all/libraries/syntaxhighlighter/scripts
Делаете cat на каждый файл, в имени которого есть *Brush*.js Последние строки показывают название языка и его алиас

SyntaxHighlighter.brushes.Bash.aliases          = ['bash', 'shell'];

Запоминаете названия и алиасы тех языков, которые Вам понадобятся и вписываете их в
[путь]/[до]/[корня]/[сайта]/modules/fckeditor/plugins/syntaxhighlight2/dialog/fck_syntaxhighlight.html
В моём случае получилось следующее.

                <td width="372">
                    <select id="ddLang">
                        <option value="bash">Bash</option>
                        <option value="c++">C++</option>
                        <option value="csharp">C# </option>
                        <option value="css">CSS </option>
                        <option value="diff">Diff</option>
                        <option value="erlang">Erlang</option>
                        <option value="java">Java </option>
                        <option value="javafx">JavaFX </option>
                        <option value="jscript">Java Script</option>
                        <option value="php">PHP</option>
                        <option value="perl">Perl</option>
                        <option value="plain">Plain</option>
                        <option value="powershell">PowerShell</option>
                        <option value="python">Python</option>
                        <option value="ruby">Ruby</option>
                        <option value="sql">SQL</option>
                        <option value="xhtml">XML/HTML</option>
                    </select>
                </td>

Теперь надо зарегистрировать плагин в друпаловском модуле. Для этого отредактируем
/[путь]/[до]/[корня]/[сайта]/modules/fckeditor/fckeditor.config.js
Найдём строки

//uncomment these three lines to enable teaser break and page break plugins
//remember to add 'DrupalBreak' and 'DrupalPageBreak' buttons to the toolbar
FCKConfig.Plugins.Add( 'drupalbreak', 'en,pl,ru' ) ;
FCKConfig.Plugins.Add( 'imgassist' ) ;

и допишем после них следующее

// ----------------------
// Configure Syntax highlighter for 2.0.x
FCKConfig.Plugins.Add('syntaxhighlight2', 'en');
// default language options:
// c++,csharp,css,delphi,java,jscript,php,python,ruby,sql,vb,xhtml
FCKConfig.SyntaxHighlight2LangDefault = 'bash'; // here you can add the language of your preference
FCKConfig.AutoGrowMax = 400 ;

Помимо этого, надо добавить кнопку в интерфейс fckeditor. Для этого всё в этом же файле, в блоке FCKConfig.ToolbarSets['DrupalFull'] пропишем кнопку

FCKConfig.ToolbarSets['DrupalFull'] = [
['Source','SyntaxHighLight2'],
['Cut','Copy','Paste','PasteText','PasteWord'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight'],

Аналогично можно дописать кнопку в интерфейс 'DrupalBasic'. Делается также, только несколькими строками ниже. Всё, подготовительные работы закончены. Теперь включим модули. Идём на сайт "Управление" » "Конструкция сайта" » "Модули" Включаем модули FCKeditor и Syntax highlighter. После включения Syntax highlighter надо отредактировать форматы ввода, фильтр Full HTML. Идём "Управление" » "Настройка сайта" » "Форматы ввода" Жмём "Настройть" напротив Full HTML. В фильтрах включаем "Syntax Highlighter" и выключаем (если включени) "Фильтр URL". Жмём "Сохранить настройки". Теперь идём "Управление" » "Настройка сайта" » "Syntax highlighter" и выбираем языки, которые хотим подсвечивать. Помимо этого можно поэкспериментировать над темами оформления. С настройкой Syntax Highlighter закончили. Теперь последние штрихи в настройке FCKeditor.

Идём в адмикуи постави разрешения на доступ к модулю разным группам. Делается это тут "Управление" » "Управление пользователями" » "Разрешения". В блоке "модуль fckeditor" ставим галочки напротив групп, которым разрешается доступ к FCKeditor. Теперь создадим профили непосредственно в самом FCKeditor. Идём "Управление" » "Настройка сайта" » "FCKeditor". Жмём "Создать новый профиль".

Основные установки:

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

Внешний вид редактора:

Выбираем панель инструментов, соответсвенно группе, на которую заводите профиль. Выше, когда регистрировали кнопку Syntax highlighter, прописали её в интерфейс DrupalFull и DrupalBasic. Соответсвенно не забываем, если необходимо, выбрать именно эти виды интерфейсов.

Быстро пробежавшись по настройкам, допилите модуль под свои хотелки. Как закончите, жмите "Сохранить".

Проверим, всё ли получилось. Идём "Создать материал" » "Страница". Должна появиться следующая кнопка

 

Нажав на неё откроется окно, в которое надо вставить код и выбрать нужную подсветку синтаксиса. Помимо этого, во вкладке "Advanced" можно покрутить некоторые параметры.

 

Результат работы модуля подсветки синтаксиса Вы можете видеть чуть выше в статье.

Удалим скачанное из каталога /usr/local/src/hl

rm -rf /usr/local/src/hl

Вот вроде и всё. Будут вопросы или замечания - пишите в камментах, постараюсь ответить.

ВложениеРазмер
FCKEditor-syntaxhighlight_2.1.0.zip26.68 кб

Подскажите как делать всё

Подскажите как делать всё тоже самое но для CKEditor сделал по инструкции но теперь редактор вообще не отображаеться в "Создании материала"

Проверь, прописаны ли

Проверь, прописаны ли разрешения для групп пользователей на доступ к редактору и глянь в разрешениях, какие кнопки разрешены.

Как сделать чтобы при наводке

Как сделать чтобы при наводке курсора на код появлялось: копировать, печать, справка. А то у меня пере кодом появилось слово code, и значок справки.

ХЗ. У меня завелось "из

ХЗ. У меня завелось "из каробки" без каих либо дополнительных телодвижений. Может у тебя в браузере что-нибудь блокируется?

А я делал вот так подсветка

А я делал вот так подсветка кода в Drupal . Может кому полезно будет делал при помощи фильтра Геши, там подробное пошаговое оисание с картинкой)

Отправить комментарий

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters shown in the image.