一些有技术类的门户站文章详情页,会有代码高亮的需求,这样便于用户体验,discuz论坛帖子部分有这类插件,目前门户文章还没有没有对应的插件只能自行开发,修改系统内文件
对应dz版本:discuz X系列
支持语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML等
前台文章详情展示
前台发布文章页展示
解决思路:
第一步:修改\source\module\home\home_editor.php文件
搜索
a.icoSwitchMdi{background-position:-239px -60px;float:right}
在其下插入
a.icoCode {background-position:-120px -20px}
继续搜索
<a href="javascript:;" class="icoSwf" id="icoSwf" οnclick="createFlash(event, 1);return false;" title="<?php echo lang('home/editor', 'editor_link_flash');?>"></a>
在其下插入:
<a href="javascript:;" class="icoCode" id="icoCode" οnclick="createCode(event,1);return false;" title="<?php echo lang('home/editor', 'editor_code');?>"></a>
还是继续查找
<div id="createPage" class="eMenu" style="display:none;top:35px;left:26px;width:300px;font-size:12px"></div>
在其上插入
<div id="createCode" class="eMenu" style="display:none;top:35px;left:26px;width:400px;font-size:12px"> <!--?php echo lang('home/editor', 'editor_code_tip');?-->: <select name="codeLanguage" id="codeLanguage"> <option value="php">PHP</option> <option value="py">Python</option> <option value="sql">SQL</option> <option value="vb">Visual Basic</option> <option value="xml">Html/XML</option> <option value="as3">ActionScript3</option> <option value="bash">Bash/shell</option> <option value="csharp">C#</option> <option value="css">CSS</option> <option value="js">JavaScript</option> <option value="java">Java</option> <option value="perl">Perl</option> </select><br> <textarea type="text" id="Sourcecode" name="Sourcecode" value=" " style="width:400px;height:200;"></textarea><br> <input οnclick="createCode();" name="createURL" value="<?php echo lang('home/editor', 'editor_ok');?>" class="submit" type="button"> <a href="javascript:;" οnclick="fHide($('createCode'));return false;"><!--?php echo lang('home/editor', 'editor_cancel');?--></a> </div>
本文件最后一个位置搜索
body { margin: 0; padding: 0; word-wrap: break-word; font-size:14px; line-height:1.8em; font-family: Tahoma, Arial, Helvetica, snas-serif; }
在其下插入:
pre { font-size:9pt; font-family:Courier New,Arial; border:1px solid #ddd; border-left:5px solid #6CE26C; background:#f6f6f6; padding:5px; }
第二步:修改\source\language\home\lang_editor.php文件(目的是添加所需语言)
搜索
'editor_prompt_mp3' => 'mp3 音乐',
在其下插入:
'editor_code_tip' => '请选择代码语言以便于着色', 'editor_code' => '插入代码',
第三步:修改\static\image\editor\editor_base.js文件
在文件的底部插入
/** *创建代码高亮及着色方法 *Time 2012.3.5 侠客 */ function createCode(e, show) { if(typeof show == 'undefined') { var sCode = $('Sourcecode').value; var sLan = $('codeLanguage').value; sCode = sCode.replace(/\</g,"<"); if (sCode!=null){ setCaret(); format("insertHTML", '<div><h3>[代码]'+sLan+'代码:</h3><pre class="brush:'+sLan+';auto-links:false;">'+sCode+'</pre></div> <br/>'); } fHide($('createCode')); $('Sourcecode').value = ''; //设置初始值 } else { if(gIsIE){ var e = window.event; } getCaret(); var dvCodeBox = $("createCode"); var iX = e.clientX; var iY = e.clientY; dvImgBox.style.display = ""; dvImgBox.style.left = (iX-300) + "px"; dvImgBox.style.top = 33 + "px"; } }
搜索
if(fInObj(el, "createUrl") || fInObj(el, "createImg") || fInObj(el, "createSwf") || fInObj(el, "createPage")){
将其修改为
if(fInObj(el, "createUrl") || fInObj(el, "createImg") || fInObj(el, "createSwf") || fInObj(el, "createPage")|| fInObj(el, "createCode")){
继续搜索
icoPage:"createPage"
将其就改为
icoPage:"createPage", icoCode:"createCode"
接着继续搜索
var arr = ["fontface", "fontsize", "dvForeColor", "dvPortrait", "divAlign", "divList" ,"divInOut", "editFaceBox", "createUrl", "createImg", "createSwf", "createPage"];
将其修改为
var arr = ["fontface", "fontsize", "dvForeColor", "dvPortrait", "divAlign", "divList" ,"divInOut", "editFaceBox", "createUrl", "createImg", "createSwf", "createPage","creatCode"];
第四步:修改/template/当前使用模板文件夹/common/header.php文件
搜索
</head>
在其上方插入
<style> pre { font-size:9pt; font-family:Courier New,Arial; border:1px solid #ddd; border-left:5px solid #15A3F4; background:#f6f6f6; padding:5px; overflow: auto; } </style>
修改文件部分已结束
本文有参照http://www.dtyuanma.com/article-21-1.html也修改了其部分内容