akcms升级后台编辑器完美教程

2024-06-04 11:35:17

2013-1-6更新:增加代码区所见即所得风格,以与正文区分开。效果:


被这个折腾两天了,搞不定这个,连模板都没心思搞了。。不过现在总算搞定。

首先,明白一些东西。

  • akcms后台的富文本编辑器采用的是xheditor,它的特点就是小,定制性强,最后更新为2012-7-28.
  • akcms的xheidtor随着版本升级也早就更新到了最新版,也即是xheditor1.1.14版。
  • 插入代码、google地图按钮属于xheditor的插件,定制版是没有的。
  • akcms采用的xheditor是经过定制的,也就是说是阉割的。

要搞技术站,文章里必定有代码,代码区总得搞好看点,起码有个代码高亮什么的,因此义无反顾的走上了折腾后台编辑器之路。

这里有个教程,也是在网上能找到的唯一的一个教程,这篇文章原理是正确的,但是照着他这去做,效果绝对出不来。

特别是一定不要用他附件里的文件覆盖!因为一是akcms版本更新非常快,他那个的内核版本已经旧了,你去覆盖会出严重错误;二是我发现我的akcms文件是ANSI编码,而他的文件是unicode无BOM编码,文件编码不一致也会导致严重错误,还会导致插入的中文变成乱码。

下面给出正确的教程,因为akcms每次升级之后都需要将这个过程重复一遍。

一、下载安装akcms最新版本,这里假定你的akcms已经高于4.2版;

二、打开"后台/templates/admincp_moduleitem.htm",找到

  1. <{include file="admincp_header.htm"}>

在后面加入以下代码(这里将原教程中的中文改为英文,避免乱码,并且因为精简了上传内容,因此改掉相关路径):

  1. <style type="text/css">
  2. .btnMap { width:50px !important; transparent url(<{$home}>/prettify/googlemap/map.gif) no-repeat center center; }
  3. .btnCode { transparent url(<{$home}>/prettify/code.gif) no-repeat 16px 16px; background-position:2px 2px; }
  4. </style>
  5. <script type="text/javascript">
  6. var editor;
  7. var plugins = {
  8. Code: {
  9. c: 'btnCode',
  10. t: 'Insert Code',
  11. h: 1,
  12. e: function() {
  13. var _this = this;
  14. var htmlCode = '<div><select id="xheCodeType"><option value="html">HTML/XML</option><option value="js">Javascript</option><option value="css">CSS</option><option value="php">PHP</option><option value="java">Java</option><option value="py">Python</option><option value="pl">Perl</option><option value="rb">Ruby</option><option value="cs">C#</option><option value="c">C++/C</option><option value="vb">VB/ASP</option><option value="">other</option></select></div><div><textarea id="xheCodeValue" wrap="soft" spellcheck="false" style="width:300px;height:100px;" /></div><div style="text-align:right;"><input type="button" id="xheSave" value="GO" /></div>';
  15. var jCode = $(htmlCode),
  16. jType = $('#xheCodeType', jCode),
  17. jValue = $('#xheCodeValue', jCode),
  18. jSave = $('#xheSave', jCode);
  19. jSave.click(function() {
  20. _this.loadBookmark();
  21. _this.pasteHTML('<pre class="prettyprint lang-' + jType.val() + '">' + _this.domEncode(jValue.val()) + '</pre>');
  22. _this.hidePanel();
  23. return false;
  24. });
  25. _this.saveBookmark();
  26. _this.showDialog(jCode);
  27. }
  28. },
  29. map: {
  30. c: 'btnMap',
  31. t: 'Insert GoogleMaps',
  32. e: function() {
  33. var _this = this;
  34. _this.saveBookmark();
  35. _this.showIframeModal('GoogleMaps', '<{$home}>/prettify/googlemap/googlemap.html',
  36. function(v) {
  37. _this.loadBookmark();
  38. _this.pasteHTML('<img src="' + v + '" />');
  39. },
  40. 538, 404);
  41. }
  42. }
  43. };
  44. </script>
  45. <script language="javascript">
  46. function confirmdelete() {
  47. if (!confirm('<{$lan.suredelitem}>')) {
  48. return false;
  49. } else {
  50. document.location = "index.php?file=admincp&action=deleteitem&id=<{$id}>&returnlist=1";
  51. }
  52. }
  53. function checksubmit() {
  54. if ($('#title').val() == "") {
  55. alert("<{$lan.notitle}>");
  56. $('#title').focus();
  57. return false;
  58. }
  59. if ($('#category').val() == "" || $('#category').val() == 0) {
  60. alert("<{$lan.nocategory}>");
  61. $('#category0').focus();
  62. return false;
  63. }
  64. $('#s').attr("disabled", true);
  65. }
  66. function selectcategory(l, c) {
  67. if (c == 0) {
  68. if (l > 1) $("#category").val($("#category" + (l - 2)).val());
  69. } else {
  70. $("#category").val(c);
  71. }
  72. for (i = l; i < 10; i++) {
  73. $("#category" + i).get(0).options.length = 0;
  74. }
  75. $("#category" + l).prepend("<option value='0'><{$lan.pleasechoose}></option>");
  76. if (c > 0 || l == 0) {
  77. var fileref = document.createElement("script");
  78. fileref.setAttribute("type", "text/javascript");
  79. fileref.setAttribute("src", "index.php?file=admincp&action=selectcategories&up=" + c + "&level=" + l + "&module=<{$moduleid}>&defaultlist=<{$categorylist}>");
  80. document.body.appendChild(fileref);
  81. }
  82. }
  83. function SetframeHeight(obj) {
  84. var iframeid = document.getElementById(obj);
  85. if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight) {
  86. iframeidiframeid.height = iframeid.contentDocument.body.offsetHeight;
  87. } else {
  88. iframeidiframeid.height = iframeid.Document.body.scrollHeight;
  89. }
  90. }
  91. </script>

打开"后台/include/admin.func.php"搜索:

  1. tools:'Source,Pastetext,|,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,|,Align,List,Outdent,Indent,|,Link,Unlink,Anchor,Img,Hr,Table',loadCSS:'<style>body{font-size:14px;}

一共三处,替换成:

  1. plugins:plugins,loadCSS:'<style>body{font-size:14px;}pre{margin-left:2em;border-left:3px solid #00a650;padding:0 1em;font-size:12px;}

同样是因为乱码问题,所以原教程中插入的表情文字都变成乱码,也显示不出来。

这个是显示xheditor的插件模式,注意:直接在tools后面添加插件Code, Map不会显示出来,不过Flash和Media是原本就有的,可以显示。如果只要插入媒体的话,也可以将上面那句替换为:

  1. tools:'Source,Pastetext,|,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,|,Align,List,Outdent,Indent,|,Link,Unlink,Anchor,Flash,Media,Img,Hr,Table',loadCSS:'<style>body{font-size:14px;}

三、上传附件根目录下的prettify文件夹到你的网站根目录。

四、在你的文章正文模板中<head>和</head>之间插入调用(只需要在会出现代码的页面插入):

  1. <link href="<{$home}>/prettify/prettify.css" type=text/css rel=stylesheet />
  2. <script type="text/javascript" src="<{$home}>/prettify/prettify.js"></script>

并且,在文章正文后方插入代码以使JS生效:

  1. <script type="text/javascript">prettyPrint();</script>

prettify.css可以自己设置,以使代码区风格和整站协调。

大概就这个样子了,prettify代码高亮是xheditor官方的插件,相关的代码可以在其提供的demo中找到。

目前还有一个不太满意的地方:

代码区不能显示行数,这会给讨论带来一定的不便,不过也没找到其他好的兼容xheditor的代码高亮插件了,这个等将来有机会再折腾。

后台编辑器的所见即所得,不能即时的显示代码区风格,我看了一下想修改后台,结果akcms后台竟然用了iframe!而且texteara区域被双引号包括了起来,外部的风格是如论如何都进不去的,这个只能等后续修改xheditor的风格了,如果成功了也会更新到这个帖子。

转载于:https://blog.51cto.com/pockry/1108035

akcms升级后台编辑器完美教程相关推荐

  1. dedephp geteditor(,cms教程:dedecms修改后台编辑器参数GetEditor的方法

    dedecms修改后台编辑器参数GetEditor dedecms通过include/helpers/util.helper.php function GetEditor($fname, $fvalu ...

  2. OllyDBG完美教程(超强入门级)

    OllyDBG 视频教程:https://www.bilibili.com/video/av6889190 动态调试工具之OllyDbg(OD)教程:https://www.bilibili.com/ ...

  3. Typora ——一款Markdown编辑器入门教程

    Typora --Markdown编辑器入门教程 附上目录: 文章目录 Typora --Markdown编辑器入门教程 一. 序 二.前言 那么,什么是富文本格式?什么是Markdown? **Ma ...

  4. PHP百度编辑器使用方法,百度UEditor编辑器使用教程与使用方法

    标签: 我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器.关于这款百度UEditor编辑器官网上也有简单的教程,不过看着比较费劲,今天笔者就跟 ...

  5. 详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown)

    详解CSDN-markdown编辑器使用教程(首次使用CSDN-markdown) 原创:丶无殇    时间:2019-9-19 *仅基于原文教程加以注释* *注释以代码片方式(红字)* 字体颜色和大 ...

  6. 动易html在线编辑器 漏洞,动易系统解决IE8网站后台编辑器无效问题

    微软的IE8正式版已于2009年3月20日正式发布了,也有不少的动易用户升级了自己的浏览器,但在升级后都发现动易的后台编辑器无法使用了,症状就是点击任何功能图标都没有弹出设置窗口,经过搜索了一下,终于 ...

  7. eclipse 2020-06版 安装配置完美教程(最后一版支持jdk1.8)

    eclipse 2020版 安装配置完美教程   声明:此博客为本人原创,但是由于发布第一版时,就已经被其他平台抄袭,导致原创文章在第二次修订的时候被视为抄袭他人作品,并被百度等搜索引擎屏蔽,所以特地 ...

  8. wordpress怎么修改html,WordPress后台编辑器HTML模式界面中添加修改删除按钮

    在WordPress编辑器HTML模式界面中添加 按钮一文中,我大致介绍了怎么在后台添加一些自定义的按钮,本文则更为详细全面的对wordpress后台编辑器HTML模式下的按钮自定义进行详解,以让开发 ...

  9. dede5.7 GBK 在php5.4环境下 后台编辑器无法显示文章内容

    问题的原因是:是htmlspecialchars,PHP 5.4后GBK编码下默认不支持中文,转换后内容为空,UTF-8编码没有任何问题.   解决方法如下: 在\include\ckeditor\c ...

最新文章

  1. python实现洗牌算法_为什么渔民耶茨最有用的洗牌算法?
  2. Python使用matplotlib或者Seaborn箱图(boxplot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案。
  3. 聊一聊多源最短路径问题(只有5行代码哦)
  4. string操作小汇总
  5. Linux 常见命令之Find \; +结合其它命令使用案例详解
  6. 词语搜索算法思想 - 第五步 结构实现
  7. 插件translator_Zotero Jasminum 插件的更新记录
  8. 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法
  9. ImportError: cannot import name '_ellipsoid'
  10. PAT (Basic Level) Practise (中文)- 1002. 写出这个数 (20)
  11. java并发编程实战电子书,王者笔记!
  12. 什么是偏振光和UV光?
  13. ylinux系统找到软件_你的 linux 上都有什么值得推荐的软件?
  14. Exsel 设置固定表头
  15. 带疑问的歌词有哪些_带有(我)字的歌词有哪些
  16. 北京市社会保险办理流程
  17. 操作系统——文件管理
  18. java手机小程序 情人节_情人节快到了!表白小程序制作详解,撩翻你的女神!...
  19. 基于Windows api手柄映射编程
  20. 宝利通group终端升级指导书

热门文章

  1. 二类形容词(形容动词)的用法
  2. waves服务器系统,Waves Audio 宣布 SoundGrid Studio System 软件系统
  3. ChatGPT 类 AI 软件供应链的安全及合规风险
  4. 在linux下,如何使得某个目录的下的可执行文件,成为系统级的可执行文件
  5. 安卓微信调用外部浏览器
  6. windows重建图标缓存(解决快捷方式图标丢失,图标加载时间长问题)
  7. 广播和多播,IGMP协议
  8. 【数据分析day05】Scipy读/写.mat文件,wav,mp3
  9. win10 批处理 使用浏览器打开多个网址
  10. Swing-学生管理系统之主页设计