官方系列教材 - B计划

实战Joomla从0搭建企业站

在这一节中我们将为广大的Joomla爱好者揭示Joomla自定义HTML模块的一个BUG,通过这一章节的学习,也许能解决曾经困扰你许久的奇葩问题。

1,本节目标


了解自定义HTML模块BUG

2,奇怪的问题


这是一个很有趣的问题,大家可以现在自己打开bplan(前面我们还原的目标网站),找到“科技改变生活”模块:

 然后进入该模块的编辑界面,如图:

此时,你什么都不需要修改,仅仅点击一下工具栏上的保存按钮。然后刷新看看前台,你就能够看到令人震惊的事情了。

这是点击保存之前的截图:

这是点击保存之后的截图:

 我们什么都没有做,仅仅只是点击了一次保存,然后就出现了两种不一样的效果。这绝对是一个bug!毫无疑问!

3,这个bug是如何产生的?


代码不会说谎,如果在前台显示的结果不一样,那么说明两次输出的(html)代码肯定是不一样的。然后更进一步的推论就是保存前,保存后存储的代码是不一样的。(如果我们再次点击保存,是否系统又会变回来呢?答案是不会的,大家可以自己试一下)

那么问题出在什么地方呢?如果大家仔细的观察第一张图(模块列表中科技改变生活模块),你会发现在科技改变生活这个模块的下面出现了一行小字——注:请使用codemirrow编辑器编辑该模块。 在这里已经透露了答案。

实际上是编辑器的问题,当我们要编辑这个模块的时候,系统会从数据库中读取模块的数据,然后这些数据会经过编辑器的处理,最后展现给我们。在Joomla中,默认的编辑器会过滤掉<i><span>等空白标签,(我认为这是非常不明智的。当我们点击保存的时候,实际上存储的是经过编辑器处理过的数据了。虽然,我们没有主动的改变数据,但编辑器却自作主张的帮我们改变了数据了。这就是Joomla中久负盛名的编辑器bug.这也就是为什么在某一些模板中,当仅仅是修改了模块的位置,点击保存按钮后,前台界面发生奇怪变化的原因了。

4,如何解决?


那么如何解决这个问题呢?使用codemirror编辑器或者none编辑器。

前往系统 ->全局设置 前台编辑器设置中更换编辑为codemirror或者none均可。如图:

保存完成后,我们再次编辑模块,就不会有问题了。当然,时至今日我也不明白,为什么Joomla官方不修复这个bug!

 

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第4章 重新认识Joomla

第17章 实现支持栏目 - 资源下载页面

第19章 模板风格 - 让页面与众不同