您现在的位置是:首页 > cms教程 > 帝国CMS教程帝国CMS教程

帝国cms自带ckeditor编辑器代码高亮的方法codesnippet风格

张津广2023-06-11帝国CMS教程已有人查阅

导读无意中看到别人家的博客代码高亮非常漂亮,如下图所示,Mac OS风格,查阅资料为Pure Highlightjs,是WordPress插件。

无意中看到别人家的博客代码高亮非常漂亮,如下图所示,Mac OS风格,查阅资料为Pure Highlightjs,是WordPress插件。奈何咱们的博客不是WordPress程序,长叹一声~ 不过还好,Pure Highlightjs是基于Highlightjs,而本博客用的编辑器是帝国cms自带的ckeditor,ckeditor的代码高亮插件codesnippet也是基于Highlightjs,嘿嘿,那么动手改造吧。
关于ckeditor安装codesnippet高亮插件网上教程很多,本篇不再赘述,小伙伴们可自行查阅资料安装。
一、对比两个插件生成的高亮html代码
1、codesnippet生成的高亮Html代码
​​​​​​​<pre>
<code class="language-java hljs">
xxxxxx
</code>
</pre>
2、**c风格主题Pure Highlightjs生成的高亮Html代码
​​​​​​​<pre class="pure-highlightjs line-numbers language-java">
<code class=" language-java">
xxxxxxxx
</code>
</pre>
对比之下发现,Pure Highlightjs生成的高亮代码中,pre标签多了pure-highlightjs line-numbers language-*这三个class。
二、动手改造找到e/admin/ecmseditor/infoeditor/plugins/codesnippet目录下plugin.js修改
1、给template加上这三个class
template: '<pre class="pure-highlightjs line-numbers ' + codeClass + '"><code class="' + codeClass + '"></code></pre>'
2、修改 data函数,更新代码时,同时修改pre标签的language-* class
​​​​​​​data: function() {
var newData = this.data,
oldData = this.oldData;

if ( newData.code )
this.parts.code.setHtml( CKEDITOR.tools.htmlEncode( newData.code ) );

// Remove old .language-* class.
if ( oldData && newData.lang != oldData.lang ) {
var odl = oldData.lang;
this.parts.code.removeClass( 'language-' + odl );
//修改代码时,更新pre标签的language-* class
this.parts.pre.removeClass( 'language-' + odl );
}

// Lang needs to be specified in order to apply for**tting.
if ( newData.lang ) {
// Apply new .language-* class.
var ndl = newData.lang;
this.parts.code.addClass( 'language-' + ndl );
//修改代码时,更新pre标签的language-* class
this.parts.pre.addClass( 'language-' + ndl );
this.highlight();
}

// Save oldData.
this.oldData = CKEDITOR.tools.copy( newData );
}
3、修改upcast函数,提交代码时,添加pre的language-*
​​​​​​​upcast: function( el, data ) {
if ( el.name != 'pre' )
return;

var childrenArray = getNonEmptyChildren( el ),
code;

if ( childrenArray.length != 1 || ( code = childrenArray[ 0 ] ).name != 'code' )
return;

// Upcast <code> with text only: https://dev.ckeditor.com/ticket/11926#comment:4
if ( code.children.length != 1 || code.children[ 0 ].type != CKEDITOR.NODE_TEXT )
return;

// Read language-* from <code> class attribute.
var **tchResult = editor._.codesnippet.langsRegex.exec( code.attributes[ 'class' ] );

if ( **tchResult )
data.lang = **tchResult[ 1 ];

// Use textarea to decode HTML entities (https://dev.ckeditor.com/ticket/11926).
textarea.setHtml( code.getHtml() );
data.code = textarea.getValue();

code.addClass( codeClass );
//pre标签添加codeClass
el.addClass( codeClass );
return el;
}
4、修改downcast函数
​​​​​​​downcast: function( el ) {
var code = el.getFirst( 'code' );

// Remove pretty for**tting from <code>...</code>.
code.children.length = 0;

// Remove config#codeSnippet_codeClass.
code.removeClass( codeClass );
//删除pre标签codeClass
el.removeClass( codeClass );

// Set raw text inside <code>...</code>.
code.add( new CKEDITOR.htmlParser.text( CKEDITOR.tools.htmlEncode( this.data.code ) ) );

return el;
}
三、加入Pure Highlightjs的js和样式文件
涉及到的js和css文件:pri**.js,**c.css,clipboard.min.js,需要的小伙伴可以直接从本博客代码中获取
这篇教程可能很多人不是很明白,为了方便大家实现功能,我们又更了详细的步骤教程,查阅>>帝国cms编辑器ckeditor代码高亮前端显示mac风格 (更新时间2025年09月18日)

本文标签:

很赞哦! ()

相关源码

  • WordPress主题模板JustNews资讯博客类源码V5.2.2JustNews主题针对博客创作、自媒体运营及资讯发布类网站的需求而设计,提供专业的内容展示与管理方案。该主题集成前端用户中心功能,支持用户在前端界面发布和投稿文章,操作流程简洁高效。查看源码
  • (自适应响应式)HTML5甲醛环境检测网站模板带在线留言和资料下载本模板为甲醛检测与环保科技企业开发,采用PbootCMS内核构建。首页集成空气质量数据可视化模块,服务流程采用时间轴展示设计,检测报告板块支持PDF在线预览功能查看源码
  • (PC+WAP)历史复古古典古籍文章资讯类pbootcms模板下载本模板基于PbootCMS系统开发,为古籍研究、历史文献类网站设计,特别适合展示古典书籍、历史档案等文化内容。采用复古风格设计,同时具备现代化响应式布局,确保在PC和移动设备上都能呈现优雅的阅读体验。查看源码
  • 帝国cms7.5淘宝客电商品牌特价带手机站带会员模板下载为电商品牌特价展示设计的帝国CMS模板,集成PC端与移动端双平台适配。采用瀑布流商品布局,支持品牌分类聚合展示,突出特价促销视觉冲击力。查看源码
  • (自适应)帝国CMS7.5模板淘宝客导购博客文章源码本模板基于帝国CMS7.5内核深度开发,为电商导购类网站设计。采用响应式布局技术,确保在手机、平板及电脑端均能获得优质浏览体验。模板内置商品推荐模块与优惠信息展示区,可快速搭建专业导购平台。查看源码
  • 帝国cms7.2淘宝客导购自媒体博客网站模板源码本模板基于帝国CMS7.2内核深度开发,为淘宝客、商品导购类自媒体及博客网站设计。通过可视化后台管理,可快速搭建具备商品推荐、比价功能的内容平台,帮助用户实现流量高效转化。查看源码
分享笔记 (共有 篇笔记)
验证码: