Main menu

Подсветка кода в Joomla! GeSHi

Yazov Rating Yazov Rating Yazov Rating Yazov Rating Yazov Rating Рейтинг 4.94 (141 Голосов)

После обновления с Joomla! 1.5 до Joomla! 3.0 Я столкнулся с проблемой, которая заключается в выводе кода в статьи Joomla!. Так как известные мне плагины, такие как Source от NoNumber, еще не обновили для работы с новой версией движка нужно было искать методы для вывода и подсветки кода в статьи стандартными средствами. Я уже давно знал о родном плагине подсветки кода GeSHi, однако после неудачного с ним опыта практически никогда им и не пользовался. Но вопрос нужно было решать и Я, набравшись терпения, решил осилить этот плагин, и, как оказалось не зря. К тому же это оказалось сделать проще чем казалось...

GeSHi оказался ничуть не хуже альтернатив, которых для Joomla! 3.0 сейчас нет, а для 2.5 не так и много. Работать с ним конечно не так удобного как например с Sourcer, приходится отключать редактор, но его возможности оказались далеко не скудными, как Я думал. Плагин GeSHi поддерживает следующие синтаксисы языков программирования:

  • css
  • diff
  • html4strict
  • ini
  • javascript
  • php
  • mysql
  • php-brief
  • sql
  • xml

Довольно неплохой список, учитывая что плагин то стандартный. Найти их можно в папке plugins/content/geshi/geshi/geshi.

Вызвать плагин можно следующей конструкцией: <pre xml:lang="php"> </pre>. Просто подставьте в параметр lang= нужный вам язык программирования и он обеспечит необходимую подсветку и вывод кода. Примеров работы сайта достаточно на моем сайте, например в этой статье о доработке категорий Joomla! 2.5 наглядно видно, как выводится и подсвечивается код. Так же увидите пример работы плагина ниже в этой статье.

Однако есть один нюанс - редактор лучше выключить при добавлении кода в статью. Потому как есть вероятность того, что редактор просто вырежет код из статьи или изкаверкает его до неузнаваемости. Можно вставлять через HTML в статью, однако тогда необходимо в общих настройках сайта отключить фильтрацию для того, кто код вставляет, и возможно придется так же отключить фильтрацию в плагине редактора, что Я делать не рекомендую, так как безопасность сайта - превыше всего.

Некоторым пользователям может понадобится нумерация строк в выводе кода, для этого можно перейти в plugins/content/geshi/geshi/geshi.php и вот эту строчку:

var $line_numbers = GESHI_NO_LINE_NUMBERS; 

Заменить на следующую:

var $line_numbers = GESHI_NORMAL_LINE_NUMBERS; 

Все, у вас выводится еще и нумерация в выводе кода. Мне кажется, это лишнее, по крайней мере для моего сайта, поэтому Я нумерацию не включал.

Да кстати, код может выходить за рамки статьи, в зависимости от того, какой шаблон вы используете, вообще это происходит довольно редко, однако как говориться "редко, но метко". В этом случае, чтобы добиться нормального отображения кода плагином и сделать так, чтобы код никуда не вылазил, необходимо в файле CSS вашего шаблона прописать вот такие пару строк:

pre {
    font-size: 9px;
    background-color: #F6F6F6;
    width: 550px;
    overflow: auto;
}

На этом все. Мы получаем корректное отображение кода в статьях Joomla! любой версии, без установки сторонних расширений, что конечно удобно, однако вставлять код в статью не всегда удобно, так как редактор зачастую мешает этому процессу.

Еще одна немаловажная деталь плагина GeSHi для Joomla это то, что он генерирует прямо в коде ссылки на документацию по определенным ключевым словам. Это с одной стороны очень удобно, но что если вы участвуете в биржах ссылок? Да и вообще много внешних ссылок на страницах это не есть хорошо по отношению к SEO. Для того, чтобы отключить добавление внешних ссылок по ключевым словам в GeSHi для Joomla нужно в файле plugins/content/geshi/geshi/geshi.php найти эту строчку:

var $keyword_links = true;
И заменить ее на следующую:
var $keyword_links = false;

Выше, как Я уже говорил, можно увидеть сразу два применения плагина GeSHi. Выводил и PHP и CSS, при этом не отключая редактора, а просто вставив через редактор HTML.

Дешево купить шлагбаум на www.evrovorota.com у проверенной компании.

Follow me on TwitterЯ ВКонтакте