在文章“帝国CMS编辑器更换为百度编辑器并成功实现前台代码高亮和自适应”中以更换百度UEditor编辑器的方式解决了代码高亮问题,但是文末残留了一个小问题就是有代码的文章再次编辑代码显示错乱,这个问题不管是从百度UEditor编辑器还是帝国CMS方面始终没有找到解决方法,并且百度UEditor编辑器2016后就没有再更新,近期又被腾讯爆出存在严重安全漏洞,详见:https://cloud.tencent.com/developer/news/379120,所以从安全角度考虑还是不要更换帝国本身的编辑器,那么解决代码高亮只能集成第三方插件了。
第一步:下载最新版的百度UEditor编辑器(也就是1.4.3.3 PHP 版本),把third-party下面的SyntaxHighlighter文件夹复制到你网站的根目录,然后在文章页模板调用:
<link href="[!--news.url-]SyntaxHighlighter/shCoreDefault.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="[!--news.url--]SyntaxHighlighter/shCore.js"></script>
<script type="text/javascript">
SyntaxHighlighter.all();
</script>
不要去找SyntaxHighlighter官方下载,下载下来没有这两个文件。
第二步:这里借用青姐整理的:
<pre class="brush:as3;toolbar:false">ActionScript3</pre>
<pre class="brush:bash;toolbar:false">Bash/Shell</pre>
<pre class="brush:css;toolbar:false;">Css</pre>
<pre class="brush:cpp;toolbar:false;">C/C++</pre>
<pre class="brush:cf;toolbar:false">CodeFunction</pre>
<pre class="brush:c#;toolbar:false">C#</pre>
<pre class="brush:delphi;toolbar:false">Delphi</pre>
<pre class="brush:diff;toolbar:false">Diff</pre>
<pre class="brush:erlang;toolbar:false">Erlang</pre>
<pre class="brush:groovy;toolbar:false;">Groovy</pre>
<pre class="brush:html;toolbar:false">Html</pre>
<pre class="brush:java;toolbar:false">Java</pre>
<pre class="brush:jfx;toolbar:false">JavaFx</pre>
<pre class="brush:js;toolbar:false">javascript</pre>
<pre class="brush:pl;toolbar:false">perl</pre>
<pre class="brush:php;toolbar:false">php</pre>
<pre class="brush:plain;toolbar:false">plainText</pre>
<pre class="brush:ps;toolbar:false">PowerShell</pre>
<pre class="brush:python;toolbar:false">Python</pre>
<pre class="brush:ruby;toolbar:false">Ruby</pre>
<pre class="brush:scala;toolbar:false">Scala</pre>
<pre class="brush:sql;toolbar:false">Sql</pre>
<pre class="brush:vb;toolbar:false">Vb</pre>
<pre class="brush:xml;toolbar:false">Xml</pre>
第三步:使用
先点击编辑器左上角的源码,此时编辑器里所有东西都成为源码格式,找到需要插入代码的地方,比如要插入一段html代码,那就复制“<pre class="brush:html;toolbar:false">Html</pre>”到源码里,然后再次点击源码,此时恢复排版效果,粘贴的“<pre class="brush:html;toolbar:false">Html</pre>”只会显示一个html,用需要插入的html代码替换掉html,发布文章后前台页面里的代码就会有高亮效果,而且再次编辑也不会错乱。
这里其实就是反向思维,插入了html代码再次编辑时编辑器里显示的是html代码的浏览器解析效果或者说浏览器预览效果,如果不做更改保存之后前台页面显示的也是浏览器解析效果,而我们需要的是代码,要想代码不被解析,那就让代码变成文本,也就是上面的操作过程。
这个方法虽然是半手动,但是对帝国CMS的安全性没有任何影响,因为只用了一个js文件和一个css文件,这两个文件完全可以设置为只读。
转载于:https://blog.weiyiqi.net/html/dgcms/384.html
- 『零氪源码』—— “一个优质的源码资源平台!”
- 本文地址:https://www.lynkcode.com/pages/lynk/jiaocheng/guide-notes/88.html
- 本文标题:帝国CMS更换为百度UEditor编辑器后文章如何实现代码高亮
- 本文版权:零氪源码 (www.lynkcode.com) » 所发布的内容,如无特别说明,转载请注明本文地址,如有侵权请联系我们!