在cnblogs和许多其他论坛、Blog上都有插入程序代码高亮显示的功能。现参考cnblogs的为例,以discuz!NT 2.0 rc2为例,说明如何增加插入代码高亮功能。

cnblogs的代码高亮功能是通过一个共享软件实现的,可以到以下网址下载使用
http://www.actiprosoftware.com/Download/Freeware.aspx

此软件的Api很简单,就是一个Asp.net的控件。可以在网页上输出高亮显示的代码。但我们不想让高亮代码在网页上输出,而是插入到文章中。可以对discuz自带的Editor进行改造,以达到响应的功能。

首先将 ActiproSoftware.CodeHighlighter.Net20.dll、ActiproSoftware.Shared.Net20.dllCodeHighlighterTest.dll Copy到discuz的bin目录。然后在discuz的页面文件价(aspx/1)下添加InsertCode.aspx文件,内容如下

 

  1为论坛和Blog添加代码高亮显示的功能。  <%@ Page Language="C#" %>
  2为论坛和Blog添加代码高亮显示的功能。  <%@ Import Namespace="ActiproSoftware.CodeHighlighter" %>
  3为论坛和Blog添加代码高亮显示的功能。 <%@ Import Namespace="System.Reflection" %>
  4为论坛和Blog添加代码高亮显示的功能。 
  5为论坛和Blog添加代码高亮显示的功能。  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6为论坛和Blog添加代码高亮显示的功能。  
  7为论坛和Blog添加代码高亮显示的功能。  <script runat="server">
  8为论坛和Blog添加代码高亮显示的功能。      protected string ReturnCode;
  9为论坛和Blog添加代码高亮显示的功能。      
 10为论坛和Blog添加代码高亮显示的功能。     protected override void OnLoad(EventArgs e)
 11

 然后修改discuz的webconfig,如下所示

 

为论坛和Blog添加代码高亮显示的功能。  1<?xml version="1.0" encoding="utf-8" ?>
为论坛和Blog添加代码高亮显示的功能。  
2<configuration>
为论坛和Blog添加代码高亮显示的功能。  
3    <configSections>
为论坛和Blog添加代码高亮显示的功能。  
4        <section name="codeHighlighter" requirePermission="false" type="ActiproSoftware.CodeHighlighter.CodeHighlighterConfigurationSectionHandler, ActiproSoftware.CodeHighlighter.Net20"/>
为论坛和Blog添加代码高亮显示的功能。  
5    </configSections>
为论坛和Blog添加代码高亮显示的功能。  
6
为论坛和Blog添加代码高亮显示的功能。  
7  <system.web>
为论坛和Blog添加代码高亮显示的功能。  
8
为论坛和Blog添加代码高亮显示的功能。  
9    <compilation 
为论坛和Blog添加代码高亮显示的功能。 
10         defaultLanguage="c#"
为论坛和Blog添加代码高亮显示的功能。 
11         debug="false"
为论坛和Blog添加代码高亮显示的功能。 
12    />
为论坛和Blog添加代码高亮显示的功能。 
13     
为论坛和Blog添加代码高亮显示的功能。 
14    <authorization>
为论坛和Blog添加代码高亮显示的功能。 
15        <allow users="*" /> <!-- 允许所有用户 -->
为论坛和Blog添加代码高亮显示的功能。 
16    </authorization>
为论坛和Blog添加代码高亮显示的功能。 
17
为论坛和Blog添加代码高亮显示的功能。 
18    <trace
为论坛和Blog添加代码高亮显示的功能。 
19        enabled="false"
为论坛和Blog添加代码高亮显示的功能。 
20        requestLimit="10"
为论坛和Blog添加代码高亮显示的功能。 
21        pageOutput="false"
为论坛和Blog添加代码高亮显示的功能。 
22        traceMode="SortByTime"
为论坛和Blog添加代码高亮显示的功能。 
23        localOnly="true"
为论坛和Blog添加代码高亮显示的功能。 
24    />
为论坛和Blog添加代码高亮显示的功能。 
25
为论坛和Blog添加代码高亮显示的功能。 
26    <!-- 以下为Discuz!NT相关的一些系统设置, 如果有疑问, 请访问 http://nt.discuz.net/config 获得更详细的说明
为论坛和Blog添加代码高亮显示的功能。
 27    -->
为论坛和Blog添加代码高亮显示的功能。 
28
为论坛和Blog添加代码高亮显示的功能。 
29
为论坛和Blog添加代码高亮显示的功能。 
30
为论坛和Blog添加代码高亮显示的功能。 
31    <!--  注意:此节设置错误信息的显示
为论坛和Blog添加代码高亮显示的功能。 
32
为论坛和Blog添加代码高亮显示的功能。 
33          "On" 始终显示自定义(友好的)信息。
为论坛和Blog添加代码高亮显示的功能。 
34          "Off" 始终显示详细的 ASP.NET 错误信息。
为论坛和Blog添加代码高亮显示的功能。 
35          "RemoteOnly" 只对不在本地 Web 服务器上运行的
为论坛和Blog添加代码高亮显示的功能。 
36    -->
为论坛和Blog添加代码高亮显示的功能。 
37    <customErrors 
为论坛和Blog添加代码高亮显示的功能。 
38    mode="RemoteOnly" 
为论坛和Blog添加代码高亮显示的功能。 
39    /> 
为论坛和Blog添加代码高亮显示的功能。 
40
为论坛和Blog添加代码高亮显示的功能。 
41    <!--  注意:此节设置全球化,Discuz!NT由此支持多语言。
为论坛和Blog添加代码高亮显示的功能。 
42    -->
为论坛和Blog添加代码高亮显示的功能。 
43    <globalization 
为论坛和Blog添加代码高亮显示的功能。 
44            requestEncoding="utf-8" 
为论坛和Blog添加代码高亮显示的功能。 
45            responseEncoding="utf-8" 
为论坛和Blog添加代码高亮显示的功能。 
46            fileEncoding="utf-8"
为论坛和Blog添加代码高亮显示的功能。 
47    />
为论坛和Blog添加代码高亮显示的功能。 
48
为论坛和Blog添加代码高亮显示的功能。 
49    <!--  注意:此节设置是否使用ASP.net表单安全验证,Discuz!NT使用自己的验证。
为论坛和Blog添加代码高亮显示的功能。 
50    -->
为论坛和Blog添加代码高亮显示的功能。 
51    <pages
为论坛和Blog添加代码高亮显示的功能。 
52            validateRequest="false"
为论坛和Blog添加代码高亮显示的功能。 
53            enableEventValidation="false"
为论坛和Blog添加代码高亮显示的功能。 
54            enableViewStateMac="false"
为论坛和Blog添加代码高亮显示的功能。 
55            viewStateEncryptionMode ="Never"
为论坛和Blog添加代码高亮显示的功能。 
56    /> 
为论坛和Blog添加代码高亮显示的功能。 
57
为论坛和Blog添加代码高亮显示的功能。 
58    <!--  注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。
为论坛和Blog添加代码高亮显示的功能。 
59    -->
为论坛和Blog添加代码高亮显示的功能。 
60    <httpModules>
为论坛和Blog添加代码高亮显示的功能。 
61        <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
为论坛和Blog添加代码高亮显示的功能。 
62    </httpModules>
为论坛和Blog添加代码高亮显示的功能。 
63
为论坛和Blog添加代码高亮显示的功能。 
64    <xhtmlConformance mode="Legacy"/>
为论坛和Blog添加代码高亮显示的功能。 
65
为论坛和Blog添加代码高亮显示的功能。 
66    <httpRuntime maxRequestLength="2097151" executionTimeout="3600"/>
为论坛和Blog添加代码高亮显示的功能。 
67
为论坛和Blog添加代码高亮显示的功能。 
68    <webServices>
为论坛和Blog添加代码高亮显示的功能。 
69      <protocols>
为论坛和Blog添加代码高亮显示的功能。 
70        <add name="HttpGet" />
为论坛和Blog添加代码高亮显示的功能。 
71        <add name="HttpPost"/>
为论坛和Blog添加代码高亮显示的功能。 
72      </protocols>
为论坛和Blog添加代码高亮显示的功能。 
73    </webServices>
为论坛和Blog添加代码高亮显示的功能。 
74
为论坛和Blog添加代码高亮显示的功能。 
75
为论坛和Blog添加代码高亮显示的功能。 
76 </system.web>
为论坛和Blog添加代码高亮显示的功能。
77
为论坛和Blog添加代码高亮显示的功能。 
78    <codeHighlighter>
为论坛和Blog添加代码高亮显示的功能。 
79        <cache languageTimeout="3"/>
为论坛和Blog添加代码高亮显示的功能。 
80        <keywordLinking enabled="true" target="_blank" defaultKeywordCollectionKey="ActiproKeywords">
为论坛和Blog添加代码高亮显示的功能。 
81            <keywordCollection key="ActiproKeywords">
为论坛和Blog添加代码高亮显示的功能。 
82                <explicitKeyword tokenKey="IdentifierToken" patternValue="Actipro" url="http://www.actiprosoftware.com" caseSensitive="false"/>
为论坛和Blog添加代码高亮显示的功能。 
83                <explicitKeyword tokenKey="IdentifierToken" patternValue="CodeHighlighter" url="http://www.codehighlighter.com" caseSensitive="false"/>
为论坛和Blog添加代码高亮显示的功能。 
84            </keywordCollection>
为论坛和Blog添加代码高亮显示的功能。 
85        </keywordLinking>
为论坛和Blog添加代码高亮显示的功能。 
86        <languages>
为论坛和Blog添加代码高亮显示的功能。 
87            <language key="Assembly" definitionPath="~/Languages/Lexers/ActiproSoftware.Assembly.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
88            <language key="BatchFile" definitionPath="~/Languages/Lexers/ActiproSoftware.BatchFile.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
89            <language key="C#" definitionPath="~/Languages/Lexers/ActiproSoftware.CSharp.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
90            <language key="CSS" definitionPath="~/Languages/Lexers/ActiproSoftware.CSS.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
91            <language key="HTML" definitionPath="~/Languages/Lexers/ActiproSoftware.HTML.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
92            <language key="INIFile" definitionPath="~/Languages/Lexers/ActiproSoftware.INIFile.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
93            <language key="Java" definitionPath="~/Languages/Lexers/ActiproSoftware.Java.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
94            <language key="JScript" definitionPath="~/Languages/Lexers/ActiproSoftware.JScript.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
95            <language key="Lua" definitionPath="~/Languages/Lexers/ActiproSoftware.Lua.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
96            <language key="MSIL" definitionPath="~/Languages/Lexers/ActiproSoftware.MSIL.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
97            <language key="Pascal" definitionPath="~/Languages/Lexers/ActiproSoftware.Pascal.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
98            <language key="Perl" definitionPath="~/Languages/Lexers/ActiproSoftware.Perl.xml"/>
为论坛和Blog添加代码高亮显示的功能。 
99            <language key="PHP" definitionPath="~/Languages/Lexers/ActiproSoftware.PHP.xml"/>
为论坛和Blog添加代码高亮显示的功能。
100            <language key="PowerShell" definitionPath="~/Languages/Lexers/ActiproSoftware.PowerShell.xml"/>
为论坛和Blog添加代码高亮显示的功能。
101            <language key="Python" definitionPath="~/Languages/Lexers/ActiproSoftware.Python.xml"/>
为论坛和Blog添加代码高亮显示的功能。
102            <language key="SQL" definitionPath="~/Languages/Lexers/ActiproSoftware.SQL.xml"/>
为论坛和Blog添加代码高亮显示的功能。
103            <language key="VB.NET" definitionPath="~/Languages/Lexers/ActiproSoftware.VBDotNet.xml"/>
为论坛和Blog添加代码高亮显示的功能。
104            <language key="VBScript" definitionPath="~/Languages/Lexers/ActiproSoftware.VBScript.xml"/>
为论坛和Blog添加代码高亮显示的功能。
105            <language key="XAML" definitionPath="~/Languages/Lexers/ActiproSoftware.XAML.xml"/>
为论坛和Blog添加代码高亮显示的功能。
106            <language key="XML" definitionPath="~/Languages/Lexers/ActiproSoftware.XML.xml"/>
为论坛和Blog添加代码高亮显示的功能。
107        </languages>
为论坛和Blog添加代码高亮显示的功能。
108        <lineNumberMargin foreColor="Teal" paddingCharacter=" " visible="true"/>
为论坛和Blog添加代码高亮显示的功能。
109        <outlining enabled="true" imagesPath="~/Images/OutliningIndicators/"/>
为论坛和Blog添加代码高亮显示的功能。
110        <spacesInTabs count="4"/>
为论坛和Blog添加代码高亮显示的功能。
111    </codeHighlighter>
为论坛和Blog添加代码高亮显示的功能。
112
为论坛和Blog添加代码高亮显示的功能。
113</configuration>

 Copy高亮组件的 Languages\Lexers、Images\OutliningIndicators 目录到discuz的指定目录

在discuz的编辑器文件 editor\editor.js,在function discuzcode(cmd, arg)函数中if else组里添加处理insertcode的代码

if (cmd == "insertcode")
    {
        window.open(
'../InsertCode.aspx'null'height=500, width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
    }
修改discuz编辑器文件 editor\cp_editor.htm 在插入图片后变添加插入代码的命令

 

<id="posteditor_cmd_insertcode">插入代码</a>

 

现在,discuz的blog里就有插入高亮代码的功能了。

相关文章:

  • 2022-12-23
  • 2021-05-03
  • 2021-06-16
  • 2022-02-06
  • 2021-08-04
  • 2021-05-28
猜你喜欢
  • 2021-06-18
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
相关资源
相似解决方案