PHP Master » Вопросы по PHP » Как интегрировать Syntaxhighlighter в DLE (Подсветка PHP кода)

Вопросы по PHP » Как интегрировать Syntaxhighlighter в DLE (Подсветка PHP кода)

 (голосов: 7)
Опубликовал: phpmaster | 21 июня 2009 | Просмотров: 2561

При написании первой статьи Как разбить текст на блоки в php я решил установить на совём сайте подсветку синтаксиса php.

Погуглив я не смог найти нормального хака и решил интегрировать Syntaxhighlighter в DLE сам.

Вот что у меня вышло.

Итак. ХАК Syntaxhighlighter в DLE (Подсветка PHP кода)

(Внимание в коде в теге [ code ] я специально добавил пробелы, иначе дле пытается их обработать smile )

1. Качаем сам Syntaxhighlighter http://code.google.com/p/syntaxhighlighter/downloads/list

2. Распаковываем архив.

3. Создаём в корне сайта каталог js

4. Закачиваем содержимое папки Scripts в js
в этот же каталог кидаем и файлы SyntaxHighlighter.css и clipboard.swf

5. Открываем файл /engine/classes/parse.class.php

находим

$source = preg_replace( "#[ code ](.+?)[ /code ]#is", "<!--code1--><div class=\"scriptcode\"><!--ecode1-->\1<!--code2--></div><!--ecode2-->", $source );


заменяем на

        
preg_match_all("#[ code ](.+?)[ /code ]#is",$source,$arr_code);
        foreach ($arr_code[1] as $value){
            $code=preg_replace("|<br />|", "n", $value);
            $source=preg_replace("|".preg_quote($value)."|",$code,$source);
        }
        $source = preg_replace( "#[ code ](.+?)[ /code ]#is", "<!--code1--><div class=\"scriptcode\"><!--ecode1--><pre name=\"code\" class=\"php\">\1</pre><!--code2--></div><!--ecode2-->", $source );



находим

$txt = preg_replace( "#<!--code1-->(.+?)<!--ecode1-->#", '[ code ]', $txt );
$txt = preg_replace( "#<!--code2-->(.+?)<!--ecode2-->#", '[ /code ]', $txt );


заменяем на

$txt = preg_replace( "#<!--code1-->(.+?)<!--ecode1--><pre name=\"code\" class=\"php\">#", '[ code ]', $txt );
$txt = preg_replace( "#</pre><!--code2-->(.+?)<!--ecode2-->#", '[ /code ]', $txt );



6. Открываем файл в каталоге /engine/preview.php и /engine/inc/preview.php

в обоих этих файлах

находим

echo <<<HTML
<html><title>Предварительный просмотр</title>
<style type="text/css">
{$tpl->copy_template}
</style> 


после вставляем

<link type="text/css" rel="stylesheet" href="/js/SyntaxHighlighter.css"></link>
<script language="javascript" src="/js/shCore.js"></script>
<script language="javascript" src="/js/shBrushCSharp.js"></script>
<script language="javascript" src="/js/shBrushPhp.js"></script>
<script language="javascript">
window.onload = function (){
dp.SyntaxHighlighter.ClipboardSwf = '/js/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
}
</script>



7. Открываем файл шаблона main.tpl

между
<head>
и
</head>


вставляем

<link type="text/css" rel="stylesheet" href="/js/SyntaxHighlighter.css"></link>
<script language="javascript" src="/js/shCore.js"></script>
<script language="javascript" src="/js/shBrushCSharp.js"></script>
<script language="javascript" src="/js/shBrushPhp.js"></script>
<script language="javascript">
window.onload = function (){
dp.SyntaxHighlighter.ClipboardSwf = '/js/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
}
</script>



Всё. на этом установка хака закончена.


Добавление комментария

Ваше Имя:

Ваш E-Mail:

Код:

Ввести код:




Rambler's Top100