Хотите получать новые советы по заработку и раскрутке сайтов? !
Не знаете как подписаться? Читайте здесь!

Автоматическая подсветка любого кода в блогах и HTML документах

1 июня, 2008

Часто в блоге или где-то ещё требуется вставить в HTML некоторый код на каком-либо языке (CSS, HTML, Perl, PHP, JS, C и т.д.). Особенно это актуально в программистских-технических блогах.
У меня возникла такая необходимость относительно недавно в посте про парсинг сайтов и прочей фигни :)

В тот раз я как выкрутился. Файл PHP переименовал в .phps - вызвал, он РНР подстветил мне код и я скопировал готовый HTML и вставил его в блог. Решение конечно интересно, но согласитесь, постоянно так извращаться - не выход. Нужно какое-то быстрое и простое решение.

Сейчас опять возникла необходимость во вставке кода PHP в HTML этого блога. Как? Недолго думая - я загуглил на эту тему и через 5 минут у меня было уже готовое решение, которое я тут же прицепил к этому блогу.

Ближе к делу…

Итак, если хотите красивую автоматическую подсветку любого известного языка программирования в Ваш блог - делаем следующее.

  1. Идём на сайт разработки проекта ““.
    Скачиваем там себе “Highlight.js” и распаковываем.
  2. Создаём тестовый файл для проверки test.html, где пишем:
    <head>
    ...
    <link rel="stylesheet" title="Default" href="styles/default.css">
    </head>
    
    <script type="text/javascript" src="highlight.js"></script>
    <script type="text/javascript">
    initHighlightingOnLoad('php', 'html', 'css');
    </script>
    
    <pre><code class="php">...тут РНР код...</code></pre>
    

Аналогичным образом можно подсвечивать не только РНР код. Этот проект поддерживает достаточное количество языков подсветки, судите сами:

  • Python
  • Ruby
  • Perl
  • PHP
  • XML
  • HTML
  • CSS
  • Django
  • Javascript
  • VBScript
  • Delphi
  • Java
  • C++
  • RenderMan (RSL и RIB)
  • SQL
  • SmallTalk
  • Axapta
  • Ini
  • Diff
  • DOS .bat
  • Bash

Вызывать библиотеку можно ещё вот так:
initHighlightingOnLoad();
Но не советую инициализировать скрипт подобным образом, поскольку он попытается автоматически распознать подсвечиваемый язык, что не всегда можно сделать корректно и второе - это время затрачиваемое на данную операцию. Так естественно долже. Поэтому, если знаете какой язык нужно подсвечивать - пропишите его сразу в “class“.

Как подключить этот скрипт к WordPress?

Сделать это можно двумя путями. Простым и не очень.
Простой - это использовав плагин ВордПресса wp_highlight.js.php, который идёт в архиве с Highlight.js.

Посложнее путь - это самостоятельно расположить все файлы скрипта и вручную подключить его в тему.
Я выбрал именно этот путь. Зачем? Не доверяю я этим всем плагинам, из-за них частенько при апдейтах “ломается” вордпресс. А если не сложно сделать вручную, то зачем вешать лишний плагин?

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

<style type="text/css">@import url(wp-content/themes/THEME_NAME/highlight/highlight.css);</style>
<script type="text/javascript" src="wp-content/themes/THEME_NAME/highlight/highlight.js"></script>
<script type="text/javascript">
initHighlightingOnLoad('php', 'html', 'css');
</script>

В файлы темы THEME_NAME (замените на название Вашей темы оформления). Файлы такие:

  • index.php - чтобы подсвечивался код на главной
  • single.php - подсветка на странице поста

Теперь код будет автоматически подсвечиваться.
Вы пока не обращайте внимания на то, что в блоге у меня не очень красивая подсветка.. я просто сейчас в процессе дизайна своей подсветки (это скрипт также предоставляет!). Поэтому, пока что провожу эксперименты с подходящим вариантом подсветки.

Ну вот и всё! Как грится, “вот и все чудеса”!
Надеюсь этот пост пойдёт кому-нибудь на пользу!
Наслаждайтесь! :)


  1. 12 Responses to “Автоматическая подсветка любого кода в блогах и HTML документах”

  2. Стёпыч [01.06.08 17:32] | Reply

    хорошая статья, пиши еще!

  3. SEOVirus [02.06.08 08:00] | Reply

    Спасибо!
    Буду стараться писать дальше! :)

  4. DimoninG [20.06.08 02:15] | Reply

    Спасибо! Только озаботился такой фигней… Хотя что-то мне подсказывает, что новые типы данных и прочее (C++) эта штука не подсвечивает. Ну сейчас и проверим.;)

  5. DimoninG [20.06.08 03:06] | Reply

    Вы дали мне вдохновение на эту статью:

    Спасибо!

    Еще пара замечаний по Вашей статье: у Вас, очевидно, тема в каждом файле использует свой хедер (), обычно в темах хедер располагается в одном файле (header.php), поэтому разместить код инициализации можно только там. Не нашел у Вас языка C++, долго пытался его добавить как c++ или c - не работало. Поэтому у себя я написал используемые в библиотеке названия языков.

  6. SEOVirus [20.06.08 21:17] | Reply

    Пожалуйста!

    Язык C++ там значится как cpp..

  7. Иван Сагалаев [25.06.08 15:23] | Reply

    DimoninG:

    > Только озаботился такой фигней… Хотя что-то мне
    > подсказывает, что новые типы данных и прочее (C++)
    > эта штука не подсвечивает. Ну сейчас и проверим.;)

    Если найдете, что не подсвечивается или подсвечивается некорректно — пишите на

  8. aktuba [05.07.08 15:50] | Reply

    Еще можно использовать GeShi, есть даже плагин для Wordpress, на его основе. А я себе сделал для подсветки синтаксиса.

  9. Доктор Портфолиус [01.03.09 05:10] | Reply

    Есть проблемка, он не настраивает css, у меня сайт темный, и пришлось использовать другое решение для этого.

  10. sarmad [07.06.09 22:00] | Reply

    Товарищи запомните HTML это не язык программирования,это язык разметки гипертекста-мне за это на экзамене по информатике 1 балл не зачли

  11. SEOVirus [10.06.09 19:04] | Reply

    Ну дык да, мы знаем :)

  12. TRSteep [29.04.10 16:53] | Reply

    А есть решение без javascript?

  1. 1 Trackback(s)

  2. Jun 20, 2008: Подсветка синтаксиса для блога WordPress с помощью highlight » Блог простого программиста

Post a Comment

Security Code: