Подсветка исходного кода в компоненте «Новость детально» 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;
	}
Если вам понравилась статья, подписывайтесь на обновления блога по rss или присоединяйтесь в twitter

Поделиться ссылкой с друзьями:

Метки: ,

Категории: Bitrix

Комментарии (2)

  1. Павел:

    А можно ли прикрутить такую подсветку к сообщениям форума на битриксе? Сам попробовал — да не понятно что именно там кастомизировать. Скопировал result_modifier.php и папку syntaxhighlighter в свой шаблон форума (комплексный), в папку forum.topic.read —> .default — не сработало. Подскажите пжта!

  2. Валентин:

    Даный вареант не работает при включонном кэшировании !