После небольшого перерыва и полного разбирательства проблемы вставки в RSS-ленту кнопки ретвита, я продолжаю вести свой блог и сегодня напишу небольшой пост по ещё одному плагину для WordPress.
Плагин под названием WP-Syntax. Из названия поста, наверное, понятно уже, что плагин предназначен для выделения кода, написанного на различных языках, цветом и размещения его в отдельный блок. Примеры использования плагина вы можете увидеть на моём блоге в предыдущем посте и в этом тоже, только чуть ниже.
С установкой плагина ни у кого не должно возникнуть проблем, так как установка данного плагина ни чем не отличается от установки любого другого плагина.
Я же уделю внимание его использованию и настройке самого плагина.
Для того, чтобы использовать плагин, необходимо нужный код поместить в блок:
<pre lang="ЯЗЫК"></pre>
Это минимум для работы плагина. Без параметра lang
код подсвечиваться не будет. Но также блоку pre
можно дать и другие параметры. Давайте рассмотрим все.
- LANG - язык, на котором написан код. Самые распространенные значение:
php
илиphp-brief
,html4strict
(значениеhtml
не работает),java
илиjava5
иjavascript
. ОБЯЗАТЕЛЬНЫЙ ПАРАМЕТР! - LINE - при значении 1 будут указываться также номера строк в коде, начиная с первой строки. Значение означает с какой строки начинать отсчет. При пустом значении или 0 их не будет.
- ESCAPED - при значении
true
знаки<
и прочие будут заменяться на<
и прочие соответственно. Проще говоря, декодирование 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 комментариев
Как же меня бесила эта ошибка. Спасибо большое за решение этой проблемы.
Хотел переходить на SyntaxHighlighter Evolved, тоже хороший плагин. Но думаю оставлю уже WP-Syntax, так как проблема решена.
Александр, что-то ваш комментарий Акисмет за спам принял.
Не за что.
Им, родимым и пользуюсь. Посты всегда печатаю в HTML-редакторе, так что ошибка не напрягала, но все равно спасибо
Кому-то не понравился наверное
У меня тоже disqus много-кого за спам принимает.
Использую для подсветки SyntaxHighlighter, пока все устраивает
да ну можно и просто jQuery плагином обойтись, включив его в шаблон…
А на мой взгляд как-то уж очень муторно с кодом возиться.
axel, что за плагин такой?
Хэннер, ну кому как. Мне проще в коде 5 минут посидеть, чем каждый раз дописывать параметры лишние 😉
Я тоже давно пользуюсь этим плагином. Как же он меня бесит! И все из-за этого переключения. У меня порой при переключении либо часть кода теряется, либо совсем исчезает, поэтому код приходится вносить в последнюю очередь в пост, попробую ваш способ исправления ошибки, посмотрю, что из этого получится.
Ну, если бы еще и язык кода сам определял
Seodaiter, тогда придется дополнять сам функционал плагина.
Да и интересно, по каким критериям определять язык кода?
ну например в php имена переменных начинаются со знака $, и код заключен в понятные теги. html по тегам, самый распрастраненный это div, ну яваскипт тоже по тегам.
asm — по регистрам и операндам
c++ — ну я его плохо знаю, но всеже по некоторым функциям
delphi — по управляющим конструкциям(их синтаксис там ососбый)
basic — незнаю, хотя сейчас он мало где используется
Seodaiter, ну знак $ может быть использован и просто так в коде, для обозначения доллара, это не самая явная черта php. Также не всегда код заключают в сказанные вами теги, например, в этом посту я не заключал его в этот блок.
Так же в html не всегда используется блок div. Опять же пример из этого поста, где используется только pre блок.
Здесь, в общем-то, много нюансов и в этой теме долго надо разбираться, чтобы найти отличительные особенности того или другого языка.
Я пытался сделать, чтобы плагин подсвечивал код даже с пустым значением lang, которому можно было бы по умолчанию поставить какое-то значение, но мне этого не удалось на данный момент.
Плагин наверное хороший для вп. Но сам не пользуюсь данной cms’кой
У меня своя цмс на сайте и для подсветки синтаксиса также как и этот плагин использую библиотеку geshi.
Очень мощная библиотека, есть конечно и другие… Но геши превосходит их в разы.
CMS Лучшее решение для всех проблем
P.S хотя плагин довольно таки хороший
@ Леха, не понял к чему это было сказано…
Ой простите не CMS, а CSS
хехе….
Хороший плагин и супер подсказка, спасибо.
Благодарю за плагин.
Попробую на своем блоге