Плагин для подсветки кода — WP-Syntax

После небольшого перерыва и полного разбирательства проблемы вставки в RSS-ленту кнопки ретвита, я продолжаю вести свой блог и сегодня напишу небольшой пост по ещё одному плагину для WordPress.

Плагин под названием WP-Syntax. Из названия поста, наверное, понятно уже, что плагин предназначен для выделения кода, написанного на различных языках, цветом и размещения его в отдельный блок. Примеры использования плагина вы можете увидеть на моём блоге в предыдущем посте и в этом тоже, только чуть ниже.

С установкой плагина ни у кого не должно возникнуть проблем, так как установка данного плагина ни чем не отличается от установки любого другого плагина.

Я же уделю внимание его использованию и настройке самого плагина.

Для того, чтобы использовать плагин, необходимо нужный код поместить в блок:

<pre lang="ЯЗЫК"></pre>

Это минимум для работы плагина. Без параметра lang код подсвечиваться не будет. Но также блоку pre можно дать и другие параметры. Давайте рассмотрим все.

  • LANG - язык, на котором написан код. Самые распространенные значение: php или php-brief, html4strict (значение html не работает), java или java5 и javascript. ОБЯЗАТЕЛЬНЫЙ ПАРАМЕТР!
  • LINE - при значении 1 будут указываться также номера строк в коде, начиная с первой строки. Значение означает с какой строки начинать отсчет. При пустом значении или 0 их не будет.
  • ESCAPED - при значении true знаки &lt; и прочие будут заменяться на < и прочие соответственно. Проще говоря, декодирование html-символов. При значении false останутся такими же.

А вот теперь о самой настройке. Никаких новых пунктов в админ-панели вы не увидите, так как плагин не имеет никаких настроек. Под настройкой я подразумеваю сейчас исправление некоторых недостатков и недочетов.

А недочет здесь один. При написании поста в визуальном редакторе самого WordPress нельзя вставить просто так нужный блок, поэтому приходится переключаться на HTML-редактор. После вставки блока и вписывания параметров, по сути, опять переключаемся на визуальный редактор. И вот тут проблема в том, что при обратном переключении пропадают параметры line и escaped. Поэтому нам придется заранее поставить для них нужное стандартное значение.

Для этого необходимо открыть файл wp-syntax.php в папке с плагином /wp-content/plugins/wp-syntax/. Все изменения будем производить в нем. Если точнее, то именно в функции wp_syntax_highlight.

1. Итак, чтобы присвоить по умолчанию параметру ESCAPED значение TRUE, то есть чтобы у вас по умолчанию происходило декодирование html-символов, необходимо заменить строку:

if ($escaped == "true") $code = htmlspecialchars_decode($code);

на следующую:

if ( (!$escaped) || ($escaped == "true") ) $code = htmlspecialchars_decode($code);

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

$line = trim($match[2]);

на строку:

$line = trim($match[2]) ? trim($match[2]) : "1";

Теперь у вас не будет возникать проблем с постоянной вставкой того или иного параметра.

Кстати, плагинов для подсветки кода достаточно много. А каким пользуетесь вы?

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

Вам также будет интересно почитать и следующие записи

19 комментариев

  • Ovsyannikov:

    Как же меня бесила эта ошибка. Спасибо большое за решение этой проблемы.

    Хотел переходить на SyntaxHighlighter Evolved, тоже хороший плагин. Но думаю оставлю уже WP-Syntax, так как проблема решена.

  • Twin:

    Александр, что-то ваш комментарий Акисмет за спам принял. :)
    Не за что.

  • Nordvind:

    Им, родимым и пользуюсь. Посты всегда печатаю в HTML-редакторе, так что ошибка не напрягала, но все равно спасибо :)

  • Ovsyannikov:

    Кому-то не понравился наверное :) У меня тоже disqus много-кого за спам принимает.

  • Алексей Валеев:

    Использую для подсветки SyntaxHighlighter, пока все устраивает

  • axel:

    да ну можно и просто jQuery плагином обойтись, включив его в шаблон…

  • Хэннер:

    А на мой взгляд как-то уж очень муторно с кодом возиться.

  • Twin:

    axel, что за плагин такой?
    Хэннер, ну кому как. Мне проще в коде 5 минут посидеть, чем каждый раз дописывать параметры лишние 😉

  • vadimon:

    Я тоже давно пользуюсь этим плагином. Как же он меня бесит! И все из-за этого переключения. У меня порой при переключении либо часть кода теряется, либо совсем исчезает, поэтому код приходится вносить в последнюю очередь в пост, попробую ваш способ исправления ошибки, посмотрю, что из этого получится.

  • Seodaiter:

    Ну, если бы еще и язык кода сам определял

  • Twin:

    Seodaiter, тогда придется дополнять сам функционал плагина. :)
    Да и интересно, по каким критериям определять язык кода?

  • Seodaiter:

    ну например в php имена переменных начинаются со знака $, и код заключен в понятные теги. html по тегам, самый распрастраненный это div, ну яваскипт тоже по тегам.
    asm — по регистрам и операндам
    c++ — ну я его плохо знаю, но всеже по некоторым функциям
    delphi — по управляющим конструкциям(их синтаксис там ососбый)
    basic — незнаю, хотя сейчас он мало где используется

  • Twin:

    Seodaiter, ну знак $ может быть использован и просто так в коде, для обозначения доллара, это не самая явная черта php. Также не всегда код заключают в сказанные вами теги, например, в этом посту я не заключал его в этот блок.
    Так же в html не всегда используется блок div. Опять же пример из этого поста, где используется только pre блок.
    Здесь, в общем-то, много нюансов и в этой теме долго надо разбираться, чтобы найти отличительные особенности того или другого языка.
    Я пытался сделать, чтобы плагин подсвечивал код даже с пустым значением lang, которому можно было бы по умолчанию поставить какое-то значение, но мне этого не удалось на данный момент.

  • Владимир:

    Плагин наверное хороший для вп. Но сам не пользуюсь данной cms’кой :)
    У меня своя цмс на сайте и для подсветки синтаксиса также как и этот плагин использую библиотеку geshi.
    Очень мощная библиотека, есть конечно и другие… Но геши превосходит их в разы.

  • Леха:

    CMS Лучшее решение для всех проблем
    P.S хотя плагин довольно таки хороший

  • Сергей Фещуков:

    @ Леха, не понял к чему это было сказано…

  • Леха:

    Ой простите не CMS, а CSS
    хехе….

  • Евгений:

    Хороший плагин и супер подсказка, спасибо.

  • Кирилл Каликин:

    Благодарю за плагин.
    Попробую на своем блоге

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