После обновления с Joomla! 1.5 до Joomla! 3.0 Я столкнулся с проблемой, которая заключается в выводе кода в статьи Joomla!. Так как известные мне плагины, такие как Source от NoNumber, еще не обновили для работы с новой версией движка нужно было искать методы для вывода и подсветки кода в статьи стандартными средствами. Я уже давно знал о родном плагине подсветки кода GeSHi, однако после неудачного с ним опыта практически никогда им и не пользовался. Но вопрос нужно было решать и Я, набравшись терпения, решил осилить этот плагин, и, как оказалось не зря. К тому же это оказалось сделать проще чем казалось...
GeSHi оказался ничуть не хуже альтернатив, которых для Joomla! 3.0 сейчас нет, а для 2.5 не так и много. Работать с ним конечно не так удобного как например с Sourcer, приходится отключать редактор, но его возможности оказались далеко не скудными, как Я думал. Плагин GeSHi поддерживает следующие синтаксисы языков программирования:
Довольно неплохой список, учитывая что плагин то стандартный. Найти их можно в папке 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.