一、插件相关信息
插件名称 Dfive代码高亮 For Discuz! 6.1
适用版本 Discuz!6.1
语言编码 不限
插件作者 King.sEe
版权所属 Dfive Team【
bbs.dfive.com.cn】
支持网站
http://bbs.dfive.com.cn
插件特性:
1.一款基于JavaScript利用正则表达式来解析文本
2.100%在客户端对标签内的代码进行高亮着色,没有服务器的依赖
3.多国语言支持
4.多浏览器支持(IE6/7,Mozilla Firefox,Opera,Safari,Netscape下测试通过)
5.多语法高亮支持(包括:C/C++, C#, CSS, Delphi/Pascal, Java, JavaScript, PHP, Python,Ruby, Sql, VB/VB.net, xml/html/xhtml/xslt)
具体安装:
一./templates/default/discuzcode.htm(修改代码框展现样式)
查找:
复制内容到剪贴板
代码:
function tpl_codedisp($discuzcodes, $code) {
<!--{block return}--><div class="blockcode"><em onclick="copycode($('code$discuzcodes[codecount]'));">{lang discuzcode_copyclipboard}</em><h5>{lang discuzcode_code}:</h5><code id="code$discuzcodes[codecount]">$code</code></div><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
}替换为:
复制内容到剪贴板
代码:
function tpl_codedisp($discuzcodes, $code, $lang) {
if ($lang):
}-->
<!--{block return}--><div class="blockcode"><h5>The $lang code:</h5><div id="code$discuzcodes[codecount]"><pre name="code" class="$lang">$code</pre></div></div><br><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
else:
}-->
<!--{block return}--><div class="blockcode"><em onclick="copycode($('code$discuzcodes[codecount]'));">{lang discuzcode_copyclipboard}</em><h5>{lang discuzcode_code}:</h5><code id="code$discuzcodes[codecount]">$code</code></div><!--{/block}-->
<!--{eval return $return;}-->
<!--{eval
endif;
}-->
<!--{eval
}二./templates/default/viewthread.htm (增加dp.SyntaxHighlighter脚本)
查找:
复制内容到剪贴板
代码:
{subtemplate header}在其下添加:
复制内容到剪贴板
代码:
<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>查找:
复制内容到剪贴板
代码:
{subtemplate footer}在其上添加:
复制内容到剪贴板
代码:
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = 'plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>三./include/discuzcode.func.php(修改代码语法标签的解析)
查找:
复制内容到剪贴板
代码:
function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code);
$discuzcodes['codecount']++;
return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
}替换为:
复制内容到剪贴板
代码:
function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = tpl_codedisp($discuzcodes, $code, '');
$discuzcodes['codecount']++;
return "[\tDISCUZ_CODE_$discuzcodes[pcodecount]\t]";
}
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_codedisp($discuzcodes, $code, $lang);
$discuzcodes['codecount']++;
return "[@DISCUZ_CODEDP_$discuzcodes[pcodecount]@]";
}查找:
复制内容到剪贴板
代码:
$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);
$message = preg_replace("/\s*\[code\](.+?)\[\/code\]\s*/ies", "codedisp('\\1')", $message);
}查找:
复制内容到剪贴板
代码:
return $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));替换为:
复制内容到剪贴板
代码:
$message = $htmlon || $allowhtml ? $message : nl2br(str_replace(array("\t", ' ', ' '), array(' ', ' ', ' '), $message));
for($i = 0; $i <= $discuzcodes['pcodecount']; $i++) {
$message = str_replace("[@DISCUZ_CODEDP_$i@]", $discuzcodes['codehtml'][$i], $message);
}
return $message;四./include/javascript/editor.js(修改代码语法标签的插入命令)
查找:
复制内容到剪贴板
代码:
str += lang['post_discuzcode_' + cmd] + ':<br /><textarea id="' + ctrlid + '_param_1" cols="50" rows="5"></textarea>';下面添加:
复制内容到剪贴板
代码:
if (cmd == 'code') {
str += '<br />Lang: <select id="' + ctrlid + '_param_2">'
+ '<option value="">请选择语言</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(['<', '>'], ['<', '>'], 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";
}五.上传upload目录中的文件
shCore.js 文件中包含有中文.因此
GBK论坛 请将plugins\dp.SyntaxHighlighter\Scripts\shCore.js另存为ANSI
UTF-8 论坛 请将plugins\dp.SyntaxHighlighter\Scripts\shCore.js另存为UTF-8
如果不会转换的upload目录外我已经存有两个已经转换好的shCore.js