曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3191|回复: 0
打印 上一主题 下一主题

代码语法高亮的修改方法 For PW8.7

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-9-19 00:16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作者phpwind lyn

做任何修改之前请注意备份!

可以下载懒人包直接上传到论坛目录:
网盘下载懒人包

具体修改步骤

步骤一:
将懒人包里的 code 文档上传到论坛根目录,这里面放着代码高亮用的文件。

步骤二:
打开 template/wind(这是默认风格,如果使用其它的风格,则相应修改)找到,header.htm,然后在文件中找到:
[Plain Text] 纯文本查看 复制代码
<link rel='archives' title="$db_bbsname" href="simple/" />

并在底下添加:
[Plain Text] 纯文本查看 复制代码
<link type="text/css" rel="stylesheet" href="code/shCoreDefault.css"/>


步骤三:
打开 template/wind(或你使用的风格)/read.htm,找到:
[Plain Text] 纯文本查看 复制代码
<!-- //end reply管理弹出 -->

下面添加(以下支持PHP代码、C语言、CSS代码3种):
[JavaScript] 纯文本查看 复制代码
<script type="text/javascript" src="code/shCore.js"></script>
    <script type="text/javascript" src="code/shBrushPhp.js"></script>
    <script type="text/javascript" src="code/shBrushCpp.js"></script>
    <script type="text/javascript" src="code/shBrushCss.js"></script>
    <script type="text/javascript">SyntaxHighlighter.all();</script>


步骤四:
1、找到(注意去掉代码中[/CODE ]和[/code ]的空格)
[PHP] 纯文本查看 复制代码
if (strpos($message,"[code ]") !== false && strpos($message,"[/code ]") !== false) {
        $message = preg_replace("/\[code\](.+)?\[\/code\]/eisU","phpcode('\\1')",$message,$db_cvtimes);
    }

替换成(注意去掉代码中[/CODE ]和[/code ]的空格):
[PHP] 纯文本查看 复制代码
if (strpos($message,'[/CODE ]') !== false || strpos($message,'[/code ]') !== false) {
        $searcharray = array(
            "/\[code\](.+?)\[\/code\]/eis",
            "/\[code=([#0-9a-z]{1,10})\](.+?)\[\/code\]/eis",
            );
        $replacearray = array(
            "phpcode('\\1')",
            "phpcode2('\\2','\\1')",
        );


2、找到
[PHP] 纯文本查看 复制代码
function phpcode($code){
    global $phpcode_htm,$codeid;
    $code = str_replace(array("[p_w_upload=",'\\"'),array("[p_w_upload=",'"'),trim($code));
    $codeid ++;
    $code = preg_replace('/^(<br \/>)?(.+)?(<br \/>)?$/','\\2',$code);
    $code = str_replace("<br />", "</li><li>", $code);
    $phpcode_htm[$codeid] = "<div class=\"f12\"><a href=\"javascript:\"  onclick=\"CopyCode(document.getElementById('code$codeid'));\">".getLangInfo('bbscode','copycode')."</a></div><div class=\"blockquote2\" id=\"code$codeid\"><ol><li>".preg_replace("/^(\<br \/\>)?(.*)/is","\\2",$code)."</li></ol></div>";
    return "<\twind_phpcode_$codeid\t>";
}

在底下添加:
[PHP] 纯文本查看 复制代码
function phpcode2($code,$type){
    global $phpcode_htm,$codeid;
    $code = str_replace(array("[p_w_upload=",'\\"'),array("[p_w_upload=",'"'),trim($code));
    $codeid ++;
    $code = str_replace("<br />", "\n", $code);
    $phpcode_htm[$codeid] = "<pre class=\"brush: $type;\">".$code."</pre>";
    return "<\twind_phpcode_$codeid\t>";
}


步骤五:
打开 js/breeze/editor/code.js 把里面所有代码替换为(注意去掉代码中2处[/code ]的空格):
[JavaScript] 纯文本查看 复制代码
// JavaScript Document
B.namespace('editor.code', function(B){
    //create PopUp
    var insertTrigger;
        function code2HTML(str){
        str = str.replace(/</g, '<');
        str = str.replace(/>/g, '>');
        return str.replace(/\r?\n/g, '<br />');
    }
    B.require('util.dialog', function(B){
        B.util.dialog({
            id: 'B_editor_code',
            pos: ['left','top',-10000, 0],
            reuse: true,
            data: '<div class="B_menu B_p10B">\
    <div style="width:320px;">\
        <div class="B_h B_drag_handle"><a href="javascript://" class="B_menu_adel B_close">×</a>插入代码内容</div>\
        <form name="B_editor_codeForm" class="B_tableA">\
            <table width="100%" class="B_mb10"><tbody>\
                <tr>\
                    <td>选择代码类型</td>\
                    <td><select name="cType"><option value="">none</option><option value="php">PHP</option><option value="php">PHP</option><option value="css">Css</option><option value="cpp">C语言</option></select></td>\
                </tr>\
                <tr>\
                    <td colspan="2"><div id="B_editor_codeText" class="B_mb10"><textarea name="content" rows="5" style="width:300px;overflow:auto;line-height:1.5;border:1px solid #ccc;"></textarea></div></td>\
                </tr>\
            </tbody></table>\
        </form>\
        <div class="B_tac B_p10"><span class="B_btn2"><span><button class="B_sumbit" type="button">提 交</button></span></span><span class="B_bt2"><span><button class="B_close" type="button">取 消</button></span></span></div>\
    </div>\
</div>',
            callback: function(popup){
                var btn = B.$('#B_editor_code .B_sumbit');
                B.addEvent(btn, 'click', function(){
                    var form = document.B_editor_codeForm,
                            content = code2HTML(form.content.value);
                            type = form.cType.value;
                    if(type==''){
                            str = '[ code]' + content + '[ /code ]';
                    }else{
                            str = '[ code=' + type + ']' + content + '[ /code ]';
                    }
                    insertTrigger(str);
                    form.reset();
                    popup.closep();
                });
            }
        });
        
        //绑定事件
    });
    
    
    B.editor.code = function(elem, fn){
        insertTrigger = fn;
        B.util.dialog({
            id: 'B_editor_code',
            pos: ['leftAlign', 'bottom']
        }, elem);
    }
});


至此完成!

添加其他语言支持
以javascript为例:
上述步骤三:
在第4行下面增加一行
[JavaScript] 纯文本查看 复制代码
<script type="text/javascript" src="code/shBrushJScript.js"></script>


上述步骤五:
第22行中间
[Plain Text] 纯文本查看 复制代码
<option value="cpp">C语言</option>


后面(不折行)增加
[JavaScript] 纯文本查看 复制代码
<option value="js">javascript</option>


完成!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 11:58 , Processed in 0.066980 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表