Навигация

Вход в систему

Drupal подсветка кода

 drupal подсветка кода Задача: Организовать подцветку php, java, html, css, c++, c# кода в Drupal.
Решение: в данной статье приведем решение данной задачи, развив процесс на этапы. При решении задачи будет применяться решение на основе проекта GeSHi.

Кратко о проекте… При помощи проекта GeSHi в различных блогах и движках может быть осуществлена:

  • Подсветка php кода
  • Подсветка jquery кода
  • Подсветка html кода
  • Подсветка javascript кода
  • Подсветка c++ кода
  • Подсветка c# кода
  • Подсветка delphi кода
  • А так же любая другая подсветка синтаксиса кода.

1 Этап. Скачиваем модули для подсветки кода.

Собственно нам понадобится следующее:

Скачиваем и устанавливаем.

  • Модуль для Друпала устанавливаем в папку sites/all/modules
  • Сам GeSHi устанавливаем в sites/all/modules/GeShiFilter/Geshi

Скажу сразу, что я сливал не последнюю версию модуля, т.к. с ней возникли непонятные мне проблемы GeSHi не отображал все языки, а обрывал список и я решил, глядя на статьи прошлых лет взять предыдущий релиз модуля и использовал модуль geshifilter 6.x-1.3, качал вот с этой страницы http://drupal.org/node/65961/release?api_version%5B%5D=87

Сам плагин стоит версии GeSHi 1.0.8.10, качал отсюда http://sourceforge.net/projects/geshi/files/geshi/

2 Этап. Включаем и настраиваем модули для подсветки кода в Drupal

  • В админке по адресу admin/build/modules включаем модуль GeShiFilter
  • В admin/settings/filters, в настройках Full HTML, ставим галочку напротив GeSHI Filter и сохраняем
  • В admin/settings/geshifilter, напротив «Use input format specific tag settings» ничего не ставим.
  • В Container tag style ставим галочку напротив <foo> ... </foo>
  • В качестве “Default highlighting mode” выбирайте выберите стиль для отображения кода по умолчанию.
  • Там же Default line numbering: как нумеровать строки (нумеровать, не нумеровать, каждую 5, каждую 10 и т.д.)
  • В CSS mode for syntax highlighting: Inline CSS style attributes.
  • В Code container, wrapping technique: GESHI_HEADER_NONE - не создает нумерованный список, типа <ol>
  • Финальный шаг, идем сюда admin/settings/geshifilter/languages/all, настраиваем подсветку для определенных языков, которые нам нужны

3 этап. Правим и патчим скрипт руками.

Тут конечно придется полезть в код и править руками, в принципе любой осилит. Нужно это для того чтобы корректно отображались спецсимволы, типа угловых скобок в редакторах, типа FCKEditor.

  • Идем в папку sites/all/modules/geshifilter/geshi/
  • Открываем для редактирования файл geshi.php
  • В нем находим функцию parse_code ()
  • И в ней после строки $code = str_replace("\r", "\n", $code); или подобной ей вставляем следующий код

$code =  rtrim(ltrim($code));
 $code =  str_replace("&gt;", ">", $code);
 $code =  str_replace("&lt;", "<", $code);
 $code =  str_replace("&lsaquo;", "‹", $code);
 $code =  str_replace("&rsaquo;", "›", $code);
 $code =  str_replace("&#39;", "'", $code);
 $code =  str_replace("&quot;", "\"", $code);
 $code =  str_replace("&amp;", "&", $code);

4 этап. Используем модуль для подсветки кода в Друпал.

Остаётся только радоваться жизни и использовать модуль для подсветки кода. Теперь осталось лишь при вставке кода обертывать его специальными тегами. Какими тегами надо обозначать код вы можете посмотреть тут /admin/settings/geshifilter/languages/all. Например для php это < php >

Выглядит у меня все это дело примерно вот так

подсветка кода drupal

Спасибо за подробное описание! Очень помогло