Home icon Все о верстке и создании сайтов » CMS » Dle » Как разнообразить вывод исходного кода в DLE

Как разнообразить вывод исходного кода в DLE

25-12-2010, 20:18,   Просмотров: 551,   Комментариев 0  
Вывод исходного кода в DLE, осуществляется посредством тегов bbcode - code. Изменить стандартный стиль для него несложно, он прописан в файле engine.css Вашего шаблона. Однако, иногда требуется использовать не один, а несколько стилей для вывода исходного кода, например, когда Вы часто его публикуете.
Было бы неплохо, иметь возможность задать хотя бы несколько стилей для вывода исходного кода. Например, один для вывода короткого кода без особого оформления, а второй, стандартно для DLE, в блоке из бордюров. Ниже приведен несложный способ, позволяющий это реализовать.

1. Откройте файл engine/ajax/bbcodes.js

найдите в нем следующую строку:
code_open|
добавьте после:
code_open1|


2. Откройте файл engine/inc/include/inserttag.php

найдите:
var code_open = 0;
добавьте ниже:
var code_open1 = 0;

в этом же файле, найдите:
<div id="b_code" class="editor_button" onclick="simpletag('code')"><img title="$lang[bb_t_code]" src="engine/skins/bbcodes/images/code.gif" width="23" height="25" border="0"></div>
добавьте ниже:
<div id="b_code" class="editor_button" onclick="simpletag('code1')"><img title="$lang[bb_t_code]" src="engine/skins/bbcodes/images/code.gif" width="23" height="25" border="0"></div>
В этом файле, как это хорошо видно из примера выше, Вы легко можете установить свою иконку для второй кнопки вывода исходного кода. Здесь же, можете изменить для нее описание.
Идем дальше.

3. Откройте файл engine/classes/parse.class.php

Внимание! Перед поиском этого кода в файле parse.class.php, скопируйте его в блокнот, и замените все code-КОД на code. Это изменение было внесено в код в связи с тем, что приведенный исходный код содержит тег, который его выводит (получается, код внутри кода).

Найдите:
function code_tag($txt = "") {
        if( $txt == "" ) {
            return;
        }
        
        $this->code_count ++;
        
        $txt = str_replace( "&", "&amp;", $txt );
        $txt = str_replace( "&lt;", "&#60;", $txt );
        $txt = str_replace( "'", "&#39;", $txt );
        $txt = str_replace( "&gt;", "&#62;", $txt );
        $txt = str_replace( "<", "&#60;", $txt );
        $txt = str_replace( ">", "&#62;", $txt );
        $txt = str_replace( "&quot;", "&#34;", $txt );
        $txt = str_replace( "\\\"", "&#34;", $txt );
        $txt = str_replace( ":", "&#58;", $txt );
        $txt = str_replace( "[", "&#91;", $txt );
        $txt = str_replace( "]", "&#93;", $txt );
        $txt = str_replace( ")", "&#41;", $txt );
        $txt = str_replace( "(", "&#40;", $txt );
        $txt = str_replace( "\r", "", $txt );
        $txt = str_replace( "\n", "<br />", $txt );
        
        $txt = preg_replace( "#\s{1};#", "&#59;", $txt );
        $txt = preg_replace( "#\t#", "&nbsp;&nbsp;&nbsp;&nbsp;", $txt );
        $txt = preg_replace( "#\s{2}#", "&nbsp;&nbsp;", $txt );
        
        $p = "[code-КОД]{" . $this->code_count . "}[/code-КОД]";
        
        $this->code_text[$p] = "[code-КОД]{$txt}[/code-КОД]";
        
        return $p;
    }

    function decode_code($txt = "", $use_html) {

//        $txt = stripslashes( $txt );
        $txt = str_replace( "&amp;", "&", $txt );

        if( $use_html ) {
            $txt = str_replace( "&lt;br /&gt;", "\n", $txt );
        }

        return "[code-КОД]".$txt."[/code-КОД]";
    }
добавьте ниже:
function code_tag1($txt = "") {
        if( $txt == "" ) {
            return;
        }
        
        $this->code_count ++;
        
        $txt = str_replace( "&", "&amp;", $txt );
        $txt = str_replace( "&lt;", "&#60;", $txt );
        $txt = str_replace( "'", "&#39;", $txt );
        $txt = str_replace( "&gt;", "&#62;", $txt );
        $txt = str_replace( "<", "&#60;", $txt );
        $txt = str_replace( ">", "&#62;", $txt );
        $txt = str_replace( "&quot;", "&#34;", $txt );
        $txt = str_replace( "\\\"", "&#34;", $txt );
        $txt = str_replace( ":", "&#58;", $txt );
        $txt = str_replace( "[", "&#91;", $txt );
        $txt = str_replace( "]", "&#93;", $txt );
        $txt = str_replace( ")", "&#41;", $txt );
        $txt = str_replace( "(", "&#40;", $txt );
        $txt = str_replace( "\r", "", $txt );
        $txt = str_replace( "\n", "<br />", $txt );
        
        $txt = preg_replace( "#\s{1};#", "&#59;", $txt );
        $txt = preg_replace( "#\t#", "&nbsp;&nbsp;&nbsp;&nbsp;", $txt );
        $txt = preg_replace( "#\s{2}#", "&nbsp;&nbsp;", $txt );
        
        $p = "[code1]{" . $this->code_count . "}[/code1]";
        
        $this->code_text[$p] = "[code1]{$txt}[/code1]";
        
        return $p;
    }

    function decode_code1($txt = "", $use_html) {

//        $txt = stripslashes( $txt );
        $txt = str_replace( "&amp;", "&", $txt );

        if( $use_html ) {
            $txt = str_replace( "&lt;br /&gt;", "\n", $txt );
        }

        return "[code1]".$txt."[/code1]";
    }

в этом же файле ищите:
if( $wysiwig != "yes" ) $txt = preg_replace( "#\[code\](.+?)\[/code\]#ies", "\$this->decode_code('\\1', '{$use_html}')", $txt );
и добавьте ниже:
if( $wysiwig != "yes" ) $txt = preg_replace( "#\[code1\](.+?)\[/code1\]#ies", "\$this->decode_code1('\\1', '{$use_html}')", $txt );

здесь же найдите:
$source = preg_replace( "#\[code\](.+?)\[/code\]#ies", "\$this->code_tag( '\\1' )", $source );
вставьте ниже:
$source = preg_replace( "#\[code1\](.+?)\[/code1\]#ies", "\$this->code_tag1( '\\1' )", $source );

в этом же файле найдите:
$source = preg_replace( "#\[code\](.+?)\[/code\]#is", "<!--code1--><div class=\"scriptcode\"><!--ecode1-->\\1<!--code2--></div><!--ecode2-->", $source );
добавьте ниже:
$source = preg_replace( "#\[code1\](.+?)\[/code1\]#is", "<!--code3--><div class=\"scriptcode1\"><!--ecode3-->\\1<!--code4--></div><!--ecode4-->", $source );

Готово. smile
Теперь, при добавлении или редактировании материалов сайта, Вы сможете выбрать между двумя типами вывода исходного кода: обычным, и например таким. Стиль для второго, пропишите в файле engine.css Вашего шаблона. Как можно увидеть выше, в данном случае, в engine.css нужно прописать стили для scriptcode1.

 (голосов: 1)