热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DedeCms5.7代码高亮的实现方法

这篇文章给大家分享的是有关DedeCms5.7代码高亮的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。DedeCms5

这篇文章给大家分享的是有关DedeCms 5.7代码高亮的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

DedeCms 5.7代码高亮怎么实现?

无论建博客网站还是CMS类型网站,很多都需要代码高亮,织梦CMS是国内比较优秀的CMS建站系统之一,不像Wordpress一样有大把大把的插件可用,我用的是最新的dedeCMS 5.7,在网上搜了很长时间资料,大都写的是CKEditor和SyntaxHighlighter整合的文章,但是dedecms将ckeditor做了集成,和一般的只针对于ckeditor对config.js修改不同。

所以只能自己琢磨修改了,现将方法写出供站长朋友们参考:

一、首先去SyntaxHighlighter官方网站下载,网址:http://alexgorbatchev.com/SyntaxHighlighter/download/,建议下载2.1版本,3.0版本的貌似不支持自动换行,这里使用的是2.1.382版本。将下载的文件解压在syntaxHighlight文件夹里,去除里面无用的文件,只留下scripts和styles文件夹。

二、新建dialogs文件夹,在里面新建一个名为syntaxhighlight.js的文件,因代码量过大,不宜贴出,请直接下载syntaxhighlight.js

如果想修改代码区域的样式请在以下代码处修改

标签里的样式。

代码如下:

onOk : function() { 
var i = this.getParentEditor(); 
var h = i.getSelection(); 
var g = h.getStartElement(); 
var l = g && g.getAscendant("pre", true); 
var j = f(); 
this.commitContent(j); 
var k = e(j); 
var m = CKEDITOR.dom.element 
.createFromHtml('
' 
+ c(j.code) +"
"); if (l) { m.insertBefore(l); l.remove() } else { i.insertElement(m) } },

三、然后新建images文件夹,存放一个syntaxhighlight.gif图片文件,该图片文件在编辑器工具栏上显示,可以使用16*16像素的图片

四、新建lang文件夹,是语言包,里面有两个文件,一个是中文cn.js一个是英文en.js,代码内容如下:

 en.js代码如下:

代码如下:

CKEDITOR.plugins.setLang('syntaxhighlight', 'en', 
{ 
syntaxhighlight: 
{ 
title: 'Add or update a code snippet', 
sourceTab: 'Source code', 
langLbl: 'Select language', 
advancedTab: 'Advanced', 
hideGutter: 'Hide gutter', 
hideGutterLbl: 'Hide gutter & line numbers.', 
hideControls: 'Hide controls', 
hideControlsLbl: 'Hide code controls at the top of the code block.', 
collapse: 'Collapse', 
collapseLbl: 'Collapse the code block by default. (controls need to be turned on)', 
showColumns: 'Show columns', 
showColumnsLbl: 'Show row columns in the first line.', 
lineWrap: 'Disable line wrapping', 
lineWrapLbl: 'Switch off line wrapping.', 
lineCount: 'Default line count', 
highlight: 'Highlight lines', 
highlightLbl: 'Enter a comma seperated lines of lines you want to highlight, eg 3,10,15.' 
} 
});

cn.js代码如下:

代码如下:

CKEDITOR.plugins.setLang('syntaxhighlight', 'cn', 
{ 
syntaxhighlight: 
{ 
title: '添加或更新代码', 
sourceTab: '代码', 
langLbl: '选择语言', 
advancedTab: '高级', 
hideGutter: '隐藏分割线', 
hideGutterLbl: '隐藏分割线和行号', 
hideControls: '隐藏工具栏', 
hideControlsLbl: '隐藏浮动工具栏', 
collapse: '代码折叠', 
collapseLbl: '默认折叠代码块 (需要启用工具栏)', 
lineWrap: '自动换行', 
lineWrapLbl: '关闭自动换行', 
autoLinks: '自动链接', 
autoLinksLbl: '不自动转换超链接', 
lineCount: '起始行号', 
highlight: '高亮行号', 
highlightLbl: '输入以逗号分隔的行号, 如 3,10,15.' 
} 
});

五、新建plugin.js文件,该文件是ckeditor插件必须得文件,里面是对该插件的一些配置,代码如下:

代码如下:

CKEDITOR.plugins.add("syntaxhighlight", { 
requires : [ "dialog" ], 
lang : [ "cn" ], 
init : function(a) { 
var b = "syntaxhighlight"; 
var c = a.addCommand(b, new CKEDITOR.dialogCommand(b)); 
c.modes = { 
wysiwyg : 1, 
source : 1 
}; 
c.canUndo = false; 
a.ui.addButton("Code", { 
label : a.lang.syntaxhighlight.title, 
command : b, 
icon : this.path + "images/syntaxhighlight.gif" 
}); 
CKEDITOR.dialog.add(b, this.path + "dialogs/syntaxhighlight.js") 
} 
});

六、由于dedecms 5.7自己集成了一个dedepage插件,用来添加ckeditor自定义插件,在/include/ckeditor/dedepage文件夹下,打开plugin.js文件在最后面添加:

requires : ['syntaxhighlight'],其中syntaxhighlight为代码高亮插件的文件夹名,添加完之后的代码如下:

[code] 
// Register a plugin named "dedepage". 
(function() 
{ 
CKEDITOR.plugins.add( 'dedepage', 
{ 
init : function( editor ) 
{ 
// Register the command. 
editor.addCommand( 'dedepage',{ 
exec : function( editor ) 
{ 
// Create the element that represents a print break. 
// alert('dedepageCmd!'); 
editor.insertHtml("
"); 
} 
}); 
// alert('dedepage!'); 
// Register the toolbar button. 
editor.ui.addButton( 'MyPage', 
{ 
label : '插入分页符', 
command : 'dedepage', 
icon: 'images/dedepage.gif' 
}); 
// alert(editor.name); 
}, 
requires : [ 'fakeobjects' ], 
requires : ['syntaxhighlight'] 
}); 
})(); 
[/code]

七、修改/include/ckeditor/ckeditor.inc.php文件,在$toolbar['Basic']数组的最后一行添加元素Code,修改后代码如下:

代码如下:

$toolbar['Basic'] = array( 
array( 'Source','-','Templates'), 
array( 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'), 
array( 'Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'), 
array( 'ShowBlocks'),array('Image','Flash'),array('Maximize'),'/', 
array( 'Bold','Italic','Underline','Strike','-'), 
array( 'NumberedList','BulletedList','-','Outdent','Indent','Blockquote'), 
array( 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'), 
array( 'Table','HorizontalRule','Smiley','SpecialChar'), 
array( 'Link','Unlink','Anchor'),'/', 
array( 'Styles','Format','Font','FontSize'), 
array( 'TextColor', 'BGColor', 'MyPage','Code') 
);

至此,编辑器的修改已经完成,修改后的syntaxhighlight文件夹文件目录结构图如下图:

DedeCms 5.7代码高亮的实现方法

  将syntaxhighlight文件夹上传到/include/ckeditor/plugins/文件夹下,打开后台,添加文章试一下,看看编辑器的上最后一行是否出现了如图所示的按钮:

DedeCms 5.7代码高亮的实现方法

  点击按钮弹出如下图所示的对话框输入代码,并且可以切换到高级选项对代码高亮显示做一些配置:

DedeCms 5.7代码高亮的实现方法

八、但是光这些还不够,还要在文章模板文件/templets/default/article_article.htm文件里引入高亮显示的笔刷JS文件和CSS文件,由于是需要引入很多JS,所以建议将引入的代码放在标签之前,等待前面的网页加载完后加载,进行显示。

代码如下:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

最后发表并生成的文章页面效果图如下:

DedeCms 5.7代码高亮的实现方法

  当然,该整合也有点缺点,就是在html页面页面中可能会引入大量的JS文件,加载起来可能会比较慢,另外可拓展性不强,我也会不定期优化该插件,也希望各位网友能提出意见。

感谢各位的阅读!关于DedeCms 5.7代码高亮的实现方法就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!


推荐阅读
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
author-avatar
黑仔小阿哥-炫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有