从http://alexgorbatchev.com/下载SyntaxHihglighter2.0,解压后有三个文件夹,src那个不用管,把其他两个目录下的所有文件拷到新建Hlight的目录下,再把Hilght放到pjblog的Plugins目录下。
然后在header.asp文件中95行左右加入以下内容:
(shThemeDefault.css可以替换为其他样式表,如:shThemeDjango.css)
类似于Plugins/Hilight/shBrushCpp.js的文件,根据需要添加;
如需使用静态页面,需把上面的内容加入Template/static.htm中。
再在common/ubbcode.asp文件中254行加入:
re.Pattern = "\[code=(.[a-zA-Z]*)([0-9]*)\](.*?)\[\/code\]"
Set strMatchs = re.Execute(strContent)
Dim lang,code,line
For Each strMatch in strMatchs
lang=strMatch.SubMatches(0)
line=strMatch.SubMatches(1)
code=strMatch.SubMatches(2)
strContent = Replace(strContent,strMatch.Value,"
"& lang&" 代码
"&code&"
")
NEXT 最后再稍微修改下Plugins/Hilight/shCore.css文件,就可以好看点。
margin: 0 0 0 0 !important; 把外边距全改为0,可以更好的融入pjblog的代码框里面的
使用格式:
[code= code231]代码[/ code]
code为代码类型:php vb css 等
231为代码起始行号,如果行号从1开始可以不写
fckeditor中直接
代码 http://defe.me/article.asp?id=118
syntaxhighlighter_2.0用起来比1.0更舒服,简单改了下,暂时能够使用,效果如下:
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('Select * from FOO') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "< br>";
die();
}
最大的好处就是纯javascript实现,不需要php ajax支持等,而且有多种样式可以选择,明天下班了在接着改!
现在最大的问题是在chrome浏览器下,直接用鼠标选择高亮的代码,会造成对应的标签页假死,只能关闭标签页,重新打开才行,这个是SyntaxHighlighter的问题,官网上也是如此
用代码高亮插件会带来的问题就,高亮显示的时候有些代码符号会被转义或是替换,最终显示不出,或是有问题。因为要在javascript和php之间交换数据,会带来一些问题,所以还是很麻烦。
转去转来最终还是想完全用javascript实现代码的高亮,SyntaxHihglighter的集成也不复杂,而且效果也还是不错,而且没有我现在用的这个这么复杂。
所以下一步,就是马上改动加入SyntaxHihglighter。
把原来的代码高亮插件 http://defe.me/article.asp?id=73,稍微改进了下,可以实现在网页载入的时候自动高亮显示代码,无需再手动点击“高亮”按钮。改动很小:
在HiLightCode.asp中加入
function code_hi(){
var code_hi
var ltp=document.getElementsByName('dftype')
var lcd=document.getElementsByName('dfcode')
for(i=0;i
var tp=ltp.item(i).innerText
var cd=lcd.item(i).innerText
cd=cd.replace(/\&/g,"(|D|F|)");
cd=cd.replace(/\+/g,"(|D|J|)");
cd=cd.replace(/\\/g,"(|D|G|)");
tp=tp.split(" ")[0];
var ul="lang=" + tp + "&code=" + cd;
df = getXmlHttp();
df.open("post","./common/code.php",false);
df.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
df.send(ul);
var result = df.status;
if(result==200)
{
code_hi=df.responseText;
}
df = null;
lcd.item(i).innerHTML=code_hi
}
}
code_hi();
在ubbcode.asp中254左右原来添加到内容替换为:
re.Pattern = "\[code=(.[^\]]*)\](.*?)\[\/code\]"
Set strMatchs = re.Execute(strContent)
For Each strMatch in strMatchs
Dim lang,code,rnd_ID,rndID_t,rndID_c,Code_hi,Code_nm
lang=strMatch.SubMatches(0)
code=strMatch.SubMatches(1)
Randomize
rnd_ID = Int(100000 * Rnd)
rndID_t = "Type"& rnd_ID
rndID_c ="Code"& rnd_ID
Code_hi="
显示: 高亮 "
Code_nm=" | 普通
"
strContent = Replace(strContent,strMatch.Value,"
"〈&" 代码
"&Code_hi & Code_nm &"
")