Для подсветки синтаксиса на блогспоте можно использовать JavaScript библиотеку "SyntaxHighlighter by Alex Gorbatchev". Библиотека не требует размещения непосредственно на сайте и не используется на стороне сервера. Что как раз и нужно на блогспоте. После знакомства с библиотекой SyntaxHighlighter можно интегрировать ее с Вашим блогом.
Внимание! Перед внесением изменений в шаблон обязательно сохраните резервную копию!
В шаблоне в секцию
<head>...</head> добавляем импорт библиотеки:<head>
. . .
<script type="text/javascript" src="SH_HOME/scripts/shCore.js"></script>
<script type="text/javascript" src="SH_HOME/scripts/shBrushJScript.js"></script>
<link type="text/css" rel="Stylesheet" href="SH_HOME/styles/shCore.css"/>
<link type="text/css" rel="Stylesheet" href="SH_HOME/styles/shThemeDefault.css"/>
<script type="text/javascript">
SyntaxHighlighter.config.clipboardSwf = 'SH_HOME/scripts/clipboard.swf';
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all()
</script>
. . .
</head>
SH_HOME - это путь к библиотеке. Если Вы будете ее использовать с сайта проекта, то путь будет таким: "http://alexgorbatchev.com/pub/sh/версия_библиотеки/" (на момент публикации данной статьи, последняя версия: 2.1.364). Обязательно включаем опцию
"bloggerMode = true" (12-я строка) - это как раз поддержка для движка Blogger.com. Сохраняем шаблон, с ним закончили.Как подсвечивать?
Для этого помещаем листинг внутри тега
<pre>, в редакторе сообщений в режиме <Изменить HTML>: <pre class="brush: java">
/**
* Hello World! on Java
*/
public void SayHello()
{
if (counter <= 10)
System.out.println("Hello World!"); //some comments
}
</pre>
Должно получиться вот так: /**
* Hello World! on Java
*/
public void SayHello()
{
if (counter <= 10)
System.out.println("Hello World!"); //some comments
}
Не забываем, заменять символ "<" на его код "<", и так придётся со всеми спецсимволами. Неудобно, но есть куча утилит которые легко с этим справляются. Либо вначале редактируем листинг в режиме "текст" а уже потом в режиме "html", тогда редактор сам заменит, но придётся вычищать оставленные им теги. Теперь у Вас в блоге будут красиво подсвеченные листинги. Читатели обязательно оценят это.
а как сделать так чтобы блок со справкой, копированием, и просмотром кода, который в верхнем правом углу появлялся при наведении???
ОтветитьУдалитьТак он так и появляется. Как, например, в этом посте. Гляньте 3-ю версию, там много приятных изменений с этим блоком.
ОтветитьУдалитьКруто. Я бы еще добавил, что скрипт активно использует тег — code. А в большинстве тем на блогспоте по умолчанию есть правило для него {display:block}. Надо поправлять, а то строчки сбиваются.
ОтветитьУдалитьВ 3-й версии, нужно что-то менять для нормального отображения toolbar ? Сделал по статье, но вместо него просто "?" с информацией о скрипте.
ОтветитьУдалить> to hedq
ОтветитьУдалитьВ 3-й версии он такой и есть. "Копировать" - теперь, как обычно, выделить и скопировать. Работа с буфером обмена в 3-й версии через джава-скрипт, а не через "невидимый" флеш. "Печать" и "Просмотр исходника" убраны из тулбара. Кстати, на сайте Алекса, точно так же - один "?" и все.
Спасибо за хорошую статью и пояснения!
ОтветитьУдалитьПереноса строки не хватает :( Можно как-то добавить?
ОтветитьУдалитьВот что получилось
ОтветитьУдалитьhttp://administraher.blogspot.com/2012/04/blog-post.html
А с помощью чего Вы подсвечиваете тег <code>?
ОтветитьУдалитьВ настройках (http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/) есть параметр "tagName", который отвечает за выбор родительского тега "подсвечиваемого" кода. По умолчанию - он pre
УдалитьПочему у меня вот так?
ОтветитьУдалитьhttp://mypronote.blogspot.com/2012/11/include-include-include-char-vdeck564.html
вот мой шаблон:http://pastebin.com/W1hgStGH
Подскажите пож, как сделать чтоб у линий фон менялся, тоисть чередовался с белого на серый?
ОтветитьУдалитьУ меня почему-то все белое.
Пробую выставить с помощью
http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/
параметр "highlight".
Но при вводе массива, получаю только те подсвеченные строчки, что написал в массиве.
Спасиб.
This doesn't work anymore with blogger and especially the dynamic views. Do you have any idea how to get it work?
ОтветитьУдалитьHi, Jay. Unfortunately I can't advice anything :(
УдалитьGood alternative https://highlightjs.org/
ОтветитьУдалить(without line numbers
http://highlightjs.readthedocs.io/en/latest/line-numbers.html)