您现在的位置是:首页 > 教程 > 帝国CMS教程帝国CMS教程
帝国cms自带ckeditor编辑器代码高亮的方法codesnippet风格
张津广2023-06-11 00:14:40帝国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代码
二、动手改造找到e/admin/ecmseditor/infoeditor/plugins/codesnippet目录下plugin.js修改
1、给template加上这三个class
涉及到的js和css文件:pri**.js,**c.css,clipboard.min.js,需要的小伙伴可以直接从本博客代码中获取
关于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自定义字段ReturnClassAddField标签截取字数的方法
- 自定义函数解决帝国cms简介截取字符出现html代码的方法
- 本地环境phpStudy搭建帝国CMS的方法
- 帝国cms提示Table 'px.***_enewspubtemp_2' doesn't exist的解决方法
- 帝国cms通过栏目ID获取栏目名称,别名,链接的方法
- 帝国CMS二次开发新浪iplookup根据ip跳转到不同域名的方法
- 帝国CMS怎么实现内容关键字替换图片alt的办法
- 帝国CMS怎么使用egetip()获取用户IP函数
- 帝国cms二次开发实现纯JS版的地区联动筛选功能
- 帝国CMS批量提取第一张图片为标题缩略图的方法
- 帝国CMS文章和TAG删除编号ID从1开始的方法
- 帝国cms后台关闭金刚模式后一片空白的解决方法
随机图文
-
帝国CMS建立模型字段报错的解决方法,Row size too large的解决方法
给一个客户做模板定制,客户的功能要求很……要建立N多的字段,在一个模型表中!那么问题来了,建立大概165个字段的时候突然报错! -
帝国CMS同时发布到栏目采用索引链链方式怎样避免重复调用
发布文章时,同时发布到以下栏目: 采用索引链链方式,怎样避免重复文章调用? -
帝国CMS列表模板过滤简介Html的方法
帝国CMS真是一个让新手又爱又恨的程序,都说帝国很强大,可是要上手起来很难,更别说能深入研究。这里要分享的是如何在列表中过滤html代码。 -
帝国CMS按照26个字母顺序循环调用信息的实现方法
帝国CMS按照26个字母顺序循环调用信息,也就是a/b/c/e/f/g...的顺序依次调用。主要看这段for按字母顺序循环调用的方法
留言与评论 (共有 条评论) |