找回密码
 我要加入

QQ登录

只需一步,快速开始

一些技术类的论坛会要求增加语法高亮的功能,这样便于用户体验,论坛帖子部分有这类插件,门户文章还没有,修改后的效果如图

一、修改说明
修改目的:给日志及门户编辑器添加代码插入功能并实现代码高亮
对应版本:discuz X系列根据以下修改说明自行修改
支持当前流行的各种编程语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML等
简介: Discuz X日志及门户编辑器整合syntaxhighlighter实现代码高亮,给Discuz X日志及门户编辑器添加代码插入功能,方便文章插入代码
二、所需修改文件:
根目录sourcemodulehomehome_editor.php
根目录sourcelanguagehomelang_editor.php
根目录staticimageeditoreditor_base.js
三、修改步骤:
1、修改sourcemodulehomehome_editor.php文件

查找:

[代码]php代码:
  1. a.icoSwitchMdi{background-position:-239px -60px;float:right}
复制代码
在其下插入:
[代码]php代码:
  1. a.icoCode {background-position:-120px -20px}
复制代码


然后再查找
[代码]php代码:
  1. <a href="javascript:;" class="icoSwf" id="icoSwf" onclick="createFlash(event, 1);return false;" title="<?php echo lang('home/editor', 'editor_link_flash');?>"></a>
复制代码


在其下插入:
[代码]php代码:
  1. <a href="javascript:;" class="icoCode" id="icoCode" onclick="createCode(event,1);return false;" title="<?php echo lang('home/editor', 'editor_code');?>"></a>
复制代码


接着还是继续查找
[代码]xml代码:
  1. <div id="createPage" class="eMenu" style="display:none;top:35px;left:26px;width:300px;font-size:12px"></div>
复制代码


其上插入
[代码]xml代码:
  1. <div id="createCode" class="eMenu" style="display:none;top:35px;left:26px;width:400px;font-size:12px">
  2. <!--?php echo lang('home/editor', 'editor_code_tip');?-->:
  3. <select name="codeLanguage" id="codeLanguage">
  4. <option value="php">PHP</option>
  5. <option value="py">Python</option>
  6. <option value="sql">SQL</option>
  7. <option value="vb">Visual Basic</option>
  8. <option value="xml">Html/XML</option>
  9. <option value="as3">ActionScript3</option>
  10. <option value="bash">Bash/shell</option>
  11. <option value="csharp">C#</option>
  12. <option value="css">CSS</option>
  13. <option value="js">JavaScript</option>
  14. <option value="java">Java</option>
  15. <option value="perl">Perl</option>
  16. </select><br>
  17. <textarea type="text" id="Sourcecode" name="Sourcecode" value=" " style="width:400px;height:200;"></textarea><br>
  18. <input onclick="createCode();" name="createURL" value="<?php echo lang('home/editor', 'editor_ok');?>" class="submit" type="button">
  19. <a href="javascript:;" onclick="fHide($('createCode'));return false;"><!--?php echo lang('home/editor', 'editor_cancel');?--></a>
  20. </div>
复制代码


接着为了实现代码预览效果,我们还需在文件最下面找到
[代码]css代码:
  1. body { margin: 0; padding: 0; word-wrap: break-word; font-size:14px; line-height:1.8em; font-family: Tahoma, Arial, Helvetica, snas-serif; }
复制代码


在下面加入这段定义pre标签的CSS代码
[代码]css代码:
  1. pre {
  2. font-size:9pt;
  3. font-family:Courier New,Arial;
  4. border:1px solid #ddd;
  5. border-left:5px solid #6CE26C;
  6. background:#f6f6f6;
  7. padding:5px;
  8. }
复制代码


不然你是看不到“预览”效果的。
2、修改sourcelanguagehomelang_editor.php文件(目的是添加所需语言)
查找
[代码]php代码:
  1. 'editor_prompt_mp3' => 'mp3 音乐',
复制代码


在其下加上
[代码]php代码:
  1. 'editor_code_tip' => '请选择代码语言以便于着色',
  2. 'editor_code' => '插入代码',
复制代码


3、修改staticimageeditoreditor_base.js文件
用编辑器打开该文件,在文件末尾加上
[代码]js代码:
  1. /**
  2. *创建代码高亮及着色方法
  3. *Time 2012.3.5 侠客
  4. */
  5. function createCode(e, show) {
  6. if(typeof show == 'undefined') {
  7. var sCode = $('Sourcecode').value;
  8. var sLan = $('codeLanguage').value;
  9. sCode = sCode.replace(/\</g,"<");
  10. if (sCode!=null){
  11. setCaret();
  12. format("insertHTML", '<div><h3>[代码]'+sLan+'代码:</h3><pre class="brush:'+sLan+';auto-links:false;">'+sCode+'</pre></div> <br/>');
  13. }
  14. fHide($('createCode'));
  15. $('Sourcecode').value = ''; //设置初始值
  16. } else {
  17. if(gIsIE){
  18. var e = window.event;
  19. }
  20. getCaret();
  21. var dvCodeBox = $("createCode");
  22. var iX = e.clientX;
  23. var iY = e.clientY;
  24. dvImgBox.style.display = "";
  25. dvImgBox.style.left = (iX-300) + "px";
  26. dvImgBox.style.top = 33 + "px";
  27. }
  28. }
复制代码


然后查找
[代码]js代码:
  1. if(fInObj(el, "createUrl") || fInObj(el, "createImg") || fInObj(el, "createSwf") || fInObj(el, "createPage")){
复制代码


将这段代码改成
[代码]js代码:
  1. if(fInObj(el, "createUrl") || fInObj(el, "createImg") || fInObj(el, "createSwf") || fInObj(el, "createPage")|| fInObj(el, "createCode")){
复制代码


接着继续查找
[代码]js代码:
  1. icoPage:"createPage"
复制代码


将其改成[代码]js代码:
  1. icoPage:"createPage",
  2. icoCode:"createCode"
复制代码


以上还没完,,还有一段重要代码(关于编辑器菜单的)
查找
[代码]js代码:
  1. var arr = ["fontface", "fontsize", "dvForeColor", "dvPortrait", "divAlign", "divList" ,"divInOut", "editFaceBox", "createUrl", "createImg", "createSwf", "createPage"];
复制代码


将其改为
[代码]js代码:
  1. var arr = ["fontface", "fontsize", "dvForeColor", "dvPortrait", "divAlign", "divList" ,"divInOut", "editFaceBox", "createUrl", "createImg", "createSwf", "createPage","creatCode"];
复制代码


这样修改部分就全部结束了:

最后上传这个压缩包里的文件到根目录就行了:链接:http://pan.baidu.com/s/1bo5kjNp 密码:tv19
我知道答案 回答被采纳将会获得10 金钱 + 1 金钱 已有0人回答
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 我要加入
关闭

站长推荐 上一条 /2 下一条