Подсветка исходного кода в компоненте «Новость детально» 1c-bitrix
Сегодня мы займемся модификацией шаблона одного из новостных компонент битрикс, с целью научить его красиво подсвечивать код на различных языках программирования. Bitrix:news.detail довольно прост и удобен для кастомизации, поэтому издеваться будем именно над ним:) В качестве основы, по традиции, использован плагин для WordPress. Выбор пал на SyntaxHighlighter Plus, работу которого можно увидеть на этом блоге.
Теория
Текст, который необходимо оформить как исходных код, заключается в BB-тег [sourceсode language='php'] code here [/sourcecode]
где значение атрибута language (в данном случае это php) – необходимый язык программирования (источник синтаксиса). Анализатор выделяет нужные фрагменты, заменяет псевдокоды на теги, и подгружает файл javascript для указанного языка, который и занимается визуальным форматированием. В архиве с шаблоном компонента лежит инструкция readme.txt, где можно найти все поддерживаемые значения для language.
Реализация в Битрикс
Вся работа по преобразованию псевдокода и подготовке необходимых файлов находится в файле result_modifier.php шаблона компонента. Это позволило не трогать template.php, отвечающий за вывод информации, и дает свободу для дальнейшей кастомизации внешнего вида без боязни удалить что-то нужное для работы «подсветчика».
Установка
Необходимо скачать шаблон компонента по ссылке ниже, скопировать его в шаблон сайта и подключить из админки. Теперь любая правильно оформленная публикация будет автоматически обрабатываться (точнее детальное описание публикации).
Пример
[sourceсode language="php"]
function wp_init($content){
if( strpos($content, ‘[WP]‘) === false ){
return $content;
} else {
$code = createcode(false);
$content = str_replace( ‘[WP]‘, $code, $content );
return $content;
}
[/sourcecode]
Результат:
function wp_init($content){ if( strpos($content, '[WP]') === false ){ return $content; } else { $code = createcode(false); $content = str_replace( '[WP]', $code, $content ); return $content; }
А можно ли прикрутить такую подсветку к сообщениям форума на битриксе? Сам попробовал — да не понятно что именно там кастомизировать. Скопировал result_modifier.php и папку syntaxhighlighter в свой шаблон форума (комплексный), в папку forum.topic.read —> .default — не сработало. Подскажите пжта!
Даный вареант не работает при включонном кэшировании !