为LBS添加代码高亮插件

[ 2007-07-25 16:04:34 | 作者: 景裔 ]
字体大小: | |
  版权所有,转载请联系我
  常在自己的BLOG中要发布些C#及其它的代码。 LBS自带的CODE标签功能太弱需要增强下。下面来介绍下要用到的高亮工具及要修改的文件

  1、代码高亮工具:syntaxhighlighter
  下载地址:http://code.google.com/p/syntaxhighlighter/downloads/list

  2、修改的文件
   global.asp
   class\ubbcode.asp

   style\SyntaxHighlighter.css (新增加的代码高亮CSS文件)
   Scripts\ (新增加的文件夹,里面为相关代码高亮的JS文件)


  3、修改方法
  首选把syntaxhighlighter下载到本地把里面的Scripts文件夹复制到你的blog根目录下,把styles文件夹下的SyntaxHighlighter.css放到你blog的styles文件夹下。
  接下来是修改文件,修改最主要的一个文件是class\ubbcode.asp
  class\ubbcode.asp改动内容:
 // Bring Back HTML New Line <br /> and Spaces
 str=str.replace(/\n/g,"<br />");
 str=str.replace(/\$nbsp\$/g,"&nbsp;");
 //以上是本身就在的代码段,以下是我新添加的代码段,找对位置添加就可以了
 //Break N add///////////////////////////////////////////////////////////2007-7-25 把代码里的换行换成\n
 str=str.replace(/\<CodeBR\>/g,"\n");
  此文件还有一处改动,找到// Process [code] tag,这个是code UBB代码的解析方法,替换为以下内容:
  注意:为避免解析,我把[]换成全角了
 // Process [code=] tag ///////////////////////////////////////////////////////Break N Edit 2007-7-25޸
 this.formatCode=function(str){
 str=str.replace(/\[code\]/ig,"[code=]");
 // Clean up string
 str=str.replace(/\[code=/ig,"[code=");
 str=str.replace(/\[\/code\]/ig,"[/code]");
 str=str.replace(/\n*\[code=/ig,"[code=");
 str=str.replace(/\n*\[\/code\]/ig,"[/code]");
 str=str.replace(/\[code=([^]]*)]\n*/ig,"[code=$1]");
 str=str.replace(/\[\/code\]\n*/ig,"[/code]");

 while(str.indexOf("[code=", 0)>-1 && str.indexOf("[/code]", 0)>-1){
 var intStart,intEnd;
 var strText="";
    var strAuthor="";
    var strSource="";
    var strResult="";
 intStart = str.indexOf("[code=", 0) + 6;
    intEnd = str.indexOf("]",intStart);
 if(intStart>5 && intEnd>0){
 strAuthor = str.substr(intStart, intEnd-intStart);
 }
 intStart = intStart + strAuthor.length + 1;
 intEnd = str.indexOf("[/code]", intStart) ;
 if(intEnd<=intStart) intEnd = intStart;
 if(intEnd>intStart){
 strText = str.substr(intStart, intEnd-intStart);
    var strAuthorText = strAuthor.replace(/\"/g, "");
    strAuthorText = strAuthorText.length>1 ? strAuthorText :"c-sharp";
    var strContent = this.encUBB(strText.replace(/^ +/gm," ").replace(/\:\/\//g,":")).replace(/\n/g,"<CodeBR>")
    //response.write(strContent);
    strResult = '<pre name="code" class="'+strAuthorText+'">'+ strContent.replace(/\<br\s\/\>/ig,'\r\n') + "</pre>";
 //strResult = '<div class="code">'+ this.encUBB(strText.replace(/^ +/gm,"&nbsp;").replace(/\:\/\//g,"&#58;//")) + "</div>";
 }
 intStart = str.indexOf("[code=", 0);
 intEnd = str.indexOf("[/code]", intStart) + 7;
 if(intEnd<=intStart+6) intEnd = intStart + 7;
 strSource = str.substr(intStart, intEnd-intStart);
 if(strResult!=""){
 str = str.replace(strSource, strResult);
 }else{
 str = str.replace(strSource, strSource.replace(/\[/g, "&#91;"));
 }
 }
 return str;
 }
  修改global.asp文件
<link rel="stylesheet" type="text/css" href="<%=theCache.settings["styleSheet"]%>" />
<!--找到以上代码段,以下面添加如下代码即可。下面的代码段为新添加内容 -->
<link type="text/css" rel="stylesheet" href="Styles/SyntaxHighlighter.css"></link>
  把以下内容放在function pageFooter()中:
<script class="javascript" src="Scripts/shCore.js"></script>
<script class="javascript" src="Scripts/shBrushCSharp.js"></script>
<script class="javascript" src="Scripts/shBrushPhp.js"></script>
<script class="javascript" src="Scripts/shBrushJScript.js"></script>
<script class="javascript" src="Scripts/shBrushJava.js"></script>
<script class="javascript" src="Scripts/shBrushVb.js"></script>
<script class="javascript" src="Scripts/shBrushSql.js"></script>
<script class="javascript" src="Scripts/shBrushXml.js"></script>
<script class="javascript" src="Scripts/shBrushDelphi.js"></script>
<script class="javascript" src="Scripts/shBrushPython.js"></script>
<script class="javascript" src="Scripts/shBrushRuby.js"></script>
<script class="javascript" src="Scripts/shBrushCss.js"></script>
<script class="javascript" src="Scripts/shBrushCpp.js"></script>
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
  Foot部分完整的代码添加效果示例
// Page footer //////////////////////////////////////////////////////////////
function pageFooter(){
 // Caculate Execution Time
 processTime = Number(new Date()) - processTime;
 %>
<!--高亮  -->
<script class="javascript" src="Scripts/shCore.js"></script>
<script class="javascript" src="Scripts/shBrushCSharp.js"></script>
<script class="javascript" src="Scripts/shBrushPhp.js"></script>
<script class="javascript" src="Scripts/shBrushJScript.js"></script>
<script class="javascript" src="Scripts/shBrushJava.js"></script>
<script class="javascript" src="Scripts/shBrushVb.js"></script>
<script class="javascript" src="Scripts/shBrushSql.js"></script>
<script class="javascript" src="Scripts/shBrushXml.js"></script>
<script class="javascript" src="Scripts/shBrushDelphi.js"></script>
<script class="javascript" src="Scripts/shBrushPython.js"></script>
<script class="javascript" src="Scripts/shBrushRuby.js"></script>
<script class="javascript" src="Scripts/shBrushCss.js"></script>
<script class="javascript" src="Scripts/shBrushCpp.js"></script>
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = 'Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
 <!-- 高亮 /end -->
<div id="footer">
<div id="innerFooter">
<!-- REMOVAL OF THIS COPYRIGHT WITHOUT PERMISSION FROM THE AUTHOR WILL VIOLATE THE LICENCE YOU AGREED TO WHEN DOWNLOADING THIS SOFTWARE. -->
<!-- Copyright Start -->
Powered by <a href="http:www.voidland.com/" target="_blank">LBS Version <%=blogVersion%></a> &copy; 2003-2005 <a href="http:www.breakN.net">Break N</a><br />
</div>
</div>
 </div>
 </div>
 </body>
</html>
 <%
 connBlog.close();
 Session.CodePage = Session("OldCodePage");
 if(inDebug) showSQL();
}
%>
  最后保存文件,上传到服务器就搞定了。

  4、如何使用
  为避免解析,我把[]换成全角了
  • HTML=[code=html]
  • XML=[code=xml]
  • C#=[code=C#]
  • Javascript=[code=js]
  • CSS=[code=css]
  • Java=[code=java]
  • C++=[code=c]
  • Delphi=[code=delphi]
  • PHP=[code=php]
  • Python=[code=python]
  • Ruby=[code=ruby]
  • SQL=[code=sql]
  • Visual Basic=[code=vb]


[最后编辑于 景裔, at 2008-11-03 08:21:33]
永久地址 永久地址: http://blog.breakN.net/feed.asp?q=comment&id=349
UTF-8 Encoding 引用地址: http://blog.breakN.net/trackback.asp?id=349

浏览模式: 阅读全文 | 评论: 15 | 引用: 1 | Toggle Order | 阅读: 7530
引用 落比*
[ 2007-10-27 18:05:17 ]
//把以下内容放在function pageFooter()中:

这里为什么错了呢 我添加了确提示错误 麻烦 你能不能把这一段补完整
Tea.Robi@Gmail.com
引用 景裔
[ 2007-10-27 21:11:56 ]
具体提示什么出错?function pageFooter()里添加的代码主要是相关jS的调用,你的出错是不是在其它地方的呢?推荐使用firefox调试下
引用 生活笔谈*
[ 2007-11-01 15:46:14 ]
LBS粉丝网进行了转载,期待你有更多的作品!
http://www.LBSFans.cn/article.asp?id=175
引用 半瓶墨水*
[ 2008-06-30 04:06:05 ]
其实可以考虑到代码发芽网贴一下然后复制粘贴高亮代码到blog,等于是在线的代码语法高亮软件

支持近百种语言代码语法高亮,有多种配色主题可供选择:

fayaa.com/code
引用 dad*
[ 2008-11-02 16:24:38 ]
//把以下内容放在function pageFooter()中: 有问题
引用 景裔
[ 2008-11-03 08:22:18 ]
见正文“Foot部分完整的代码添加效果示例”部分
引用 aajz
[ 2008-11-07 02:19:31 ]
请问使用的时候到底怎么写标签?~
引用 aajz
[ 2008-11-07 04:18:58 ]
新问题!~
在首页显示的时候一切正常~

但是在查看完整文章~即在article.asp下时没有代码高亮效果~直接文本显示了~
引用 景裔
[ 2008-11-07 15:50:11 ]
注意有没有相关JS出错提示.
怎么写标签见:“4、如何使用”这部分
引用 aajz
[ 2008-11-08 00:04:59 ]
没有提示JS出错啊~呵呵~所以觉得奇怪~

又再重新修改了一遍~还是在article.asp下时没有代码高亮效果~直接文本显示了~
引用 景裔
[ 2008-11-08 11:18:53 ]
你BLOG地址发下
引用 aajz
[ 2008-11-09 00:55:30 ]
晕死~莫名其妙的解决了~ [sweat]
[最后编辑于 aajz, at 2008-11-09 00:57:10]
引用 景裔
[ 2008-11-10 10:05:22 ]
个人认为是IE缓存问题

发表评论
表情
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
打开 UBB 编码
自动识别链接
显示表情
隐藏的评论
用户名:   密码:   注册?
验证码 * 请输入验证码