О сайтах и не о сайтах

Подсветка php-кода в Drupal

При написании предыдущего поста мне понадобилась функция подсветки синтаксиса php кода, по дефолту этого нет, поэтому пришлось немного покопаться.

Ниже приведена инструкция по прикрутке подсветки синтаксиса кода в Drupal (в Друпале чаще всего все можно реализовать несколькими способами, так что описанный ниже вариант далеко не единственный для решения поставленной задачи).

1. Качаем модуль GeSHi Filter, распаковываем, заливаем на сайт в директорию modules/, в админке сайта идем в Управление сайтом/Конструкция/Модули, ставим галку напротив GeSHi Filter, сохраняем. Активировать GeSHi node не обязательно – он создает дополнительный тип нодов исключительно для кода, что нам не требуется.

2. Теперь надо скачать библиотеки. Идем по ссылке, переходим в раздел Downloads, качаем geshi последней версии. Почему-то вчера был запрещен доступ по российский ip, в таком случае можно воспользоваться анонимайзером, что я и сделал. Далее разархивируем и заливаем папку geshi на сервер в корневую директорию установленного ранее модуля modules/geshifilter/.

3. Все установлено, можно переходить к настройке. Первым делом разрешим применение фильтров к вводимому тексту, для этого идем в раздел Управление сайтом/Настройка/Форматы ввода и жмем «настроить» напротив Full HTML где и разрешаем применение GeSHi filter.

Затем идем в настройки модуля GeSHi Filter Управление сайтом/Настройка/GeSHi Filter и, собственно, настраиваем. Поиграться здесь есть с чем, к примеру задать индивидуальные теги для применение разных стилей оформления в зависимости от того, на каком языке написаны исходники. Ниже приведу те настройки, которые сделал я.

- Снял все галки, установленный по дефолту.

- В качестве “Default highlighting mode” выбрал стиль C++, он используется для подсветки php кода на большинстве сайтов, поэтому будет попривычней, чем php-стиль.

- Значение “Default line numbering” установил в позицию “normal line numbers”, таким образом слева от кода идет нумерация строчек, можно еще выбрать, чтобы каждое 5, 10 или 20 число выделялось жирным, но это актуально лишь при цитировании больших исходников.

- Для “CSS mode for syntax highlighting” установил значение “Inline CSS style attributes”, для “Code container” значение “Use no container”. При выборе других пунктов отображение нумерации строк работать не будет.

Вот и все. Теперь при создании заметки с выбором формата ввода Full HTML весь код, заключенный в тег code, будет подсвечен.

PS
Также советую установить BUEditor - простой редактор текста, хорош тем, что можно самому программировать и добавлять нужные кнопки.

Комментарии

Привет.

Лови эстафету http://my-challenge.ru/2009/05/pyat-dostizhenij-v-moej-zhizni/

Спасибо за нужную статью.

Еще наткнулся на особенность:
code i=0; code - не работает
а так
code
i=0;
code - работает

Да люди давайте учить программированию.

Спасибо за нужную информацию.

У меня не подсвечивает.
echo 'hello world!';

У меня подсвечивается

echo 'Hello, word!';

=)

(У незарегистрированных комментаторов код не подсвечивается из-за соображений секьюрности, парсером все атрибуты тегов вырезаются.)

Помимо этого блога, GeSHi Filter использовал и на других сайтах - везде работал нормально.

Так трудно сказать, почему именно не работает. Я обычно в таких случаях играюсь с настройками, чищу кэш, читаю README.txt и прочее в папке с модулем, потом иду читать все issues по модулю (для GeSHi Filter drupal.org/project/issues/geshifilter), потом на drupal.stackexchange.com можно заглянуть (на главном их сайте stackoverflow.com в основном только общие вопросы по Друпалу, все специфичное обычно выносят именно на drupal.stackexchange), ну и просто погуглить можно. В процессе всего этого обычно и находится решение :3 Ну или не находится, здесь уж как повезет, тогда уже надо лезть в исходный код и пытаться найти самому, где что отваливается.

Добавить комментарий

Содержимое данного поля является приватным и не предназначено для показа.