安装设置Discuz7 源代码高亮

经过几个小时的苦战,终于搞定了Discuz7.0的源代码高亮了.还是要呼吁康盛创想能提供这个功能.当然还是要借助强大的SyntaxHighlighter来做了.请一定要下载(GBK版本,UTF8版)这个修改过的,否则会出现换行符.
效果图如下:

discuz7代码高亮

discuz7代码高亮

修改文件:
1./templates/default/discuzcode.htm(修改代码框展现样式)
2./templates/你的风格/header.htm (增加dp.SyntaxHighlighter脚本)
3./templates/你的风格/foot.htm (增加dp.SyntaxHighlighter脚本)
4./include/discuzcode.func.php(修改代码语法标签的解析)
5./include/js/post.js(修改代码语法标签的插入命令)
具体安装:
一./templates/default/discuzcode.htm(修改代码框展现样式)
查找:
function tpl_codedisp($discuzcodes, $code) {
}–>
<!–{block return}–><div class=”blockcode”><div id=”code$discuzcodes[codecount]“><ol><li>$code</ol></div><em onclick=”copycode($(‘code$discuzcodes[codecount]‘));”>{lang discuzcode_copyclipboard}</em></div><!–{/block}–>
<!–{eval return $return;}–>
<!–{eval
}
在这个函数的前面增加:
function tpl_codecsh($discuzcodes, $code, $lang) {
}–>
<!–{block return}–><code id=”code$discuzcodes[codecount]“><pre name=”code” class=”$lang”>$code</pre></code><!–{/block}–>
<!–{eval return $return;}–>
<!–{eval
}
二./templates/你的风格/header.htm (增加dp.SyntaxHighlighter脚本)
在</head>前添加:
<link href=”plugins/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css” type=”text/css” rel=”stylesheet” />
<script src=”plugins/dp.SyntaxHighlighter/Scripts/shCore.js” type=”text/javascript”></script>
<script class=”javascript”>
dp.SyntaxHighlighter.ClipboardSwf = ‘plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf’;
</script>
三.打开/templates/你的风格/foot.htm (增加dp.SyntaxHighlighter脚本)
在</body>前添加:
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shCore.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushCode.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushCSharp.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushPhp.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushJScript.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushJava.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushVb.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushSql.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushXml.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushDelphi.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushPython.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushRuby.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushCss.js”></script>
<script class=”javascript” src=”plugins/dp.SyntaxHighlighter/Scripts/shBrushCpp.js”></script>
<script class=”javascript”>
dp.SyntaxHighlighter.ClipboardSwf = ‘plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf’;
dp.SyntaxHighlighter.HighlightAll(‘code’);
</script>
四./include/discuzcode.func.php(修改代码语法标签的解析)
查找:
function codedisp($code)
在其下添加一个函数:
function codedpdisp($code, $lang) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace(‘\\”‘, ‘”‘, preg_replace(“/^[\n\r]*(.+?)[\n\r]*$/is”, “\\1″, $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codecsh($discuzcodes, $code, $lang);
$discuzcodes['codecount']++;
return “[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]”;
}
查找:
$message = preg_replace(“/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
在其上增加:
$message = preg_replace("/\s*\[code=\"(php|xhtml|sql|js|css|xml|html|jscript|javascript|cpp|c|c++|c#|c-sharp|csharp|delphi|pascal|java|py|python|ruby|rails|ror|vb|vb.net|xslt){1}\"\](.+?)\[\/code\]\s*/ies", "codedpdisp('\\2', '\\1')", $message);
查找:
return $htmlon ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
替换为:
    $message = $htmlon ? $message : nl2br(str_replace(array("\t", '   ', '  '), array('&nbsp; &nbsp; &nbsp; &nbsp; ', '&nbsp; &nbsp;', '&nbsp;&nbsp;'), $message));
    for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
        $message = str_replace("[\tDISCUZ_CODE_$i\t]", $discuzcodes['codehtml'][$i], $message);
}
    return $message;
(注意:上面的替换其他人的好像和我的不一样.这个替换只供参照)
五./include/javascript/post.js(修改代码语法标签的插入命令)
查找:
</textarea>';
在其下增加:
if (cmd == 'code') {
                str += '<br />Lang: <select id="' + ctrlid + '_param_2">'
     + '<option value="">Choose Language</option>'
                    + '<option value="php">php</option>'
                    + '<option value="xhtml">xhtml</option>'
                    + '<option value="sql">sql</option>'
                    + '<option value="js">js</option>'
                    + '<option value="css">css</option>'
                    + '<option value="xml">xml</option>'
                    + '<option value="html">html</option>'
                    + '<option value="jscript">jscript</option>'
                    + '<option value="javascript">javascript</option>'
                    + '<option value="cpp">cpp</option>'
                    + '<option value="c">c</option>'
                    + '<option value="c++">c++</option>'
                    + '<option value="c#">c#</option>'
                    + '<option value="c-sharp">c-sharp</option>'
                    + '<option value="csharp">csharp</option>'
                    + '<option value="delphi">delphi</option>'
                    + '<option value="pascal">pascal</option>'
                    + '<option value="java">java</option>'
                    + '<option value="py">py</option>'
                    + '<option value="python">python</option>'
                    + '<option value="ruby">ruby</option>'
                    + '<option value="rails">rails</option>'
                    + '<option value="ror">ror</option>'
                    + '<option value="vb">vb</option>'
                    + '<option value="vb.net">vb.net</option>'
                    + '<option value="xslt">xslt</option>'
                    + '</select>';
            }
查找:
if(wysiwyg) {
    if(cmd == 'code') {
     text = preg_replace(['<', '>'], ['&lt;', '&gt;'], text);
    }
    text = text.replace(/\r?\n/g, '<br />');
   }
下面添加:
if (cmd == 'code' && $(ctrlid + '_param_2').value != '') {
                opentag = '[code="' + $(ctrlid + '_param_2').value + '"]';
                text = "\n" + text + "\n";
            }

 

作者: 果子
原文地址: http://www.delphires.com/home/space.php?uid=1&do=blog&id=25

This entry was posted in 网站应用 and tagged , . Bookmark the permalink.

One Response to 安装设置Discuz7 源代码高亮

  1. 2BETOP says:

    DIScuz 7 代码高亮优化版.有DEMO,有详细步骤.[url]http://www.2betop.cn/bbs/viewthread.php?tid=1&extra=page%3D1[/url]

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word