本节将要解决的问题是如何让自己写出的代码兼容j33.如果你看了本站的组件开发系列教程,你应该可以写出一个组件了。但同时你会遇到组件的兼容性问题。

一直以为j33对j25是完美兼容的,j33的改变只是后台模版采用了bootstarp而已。其实这是不对的。j33确实对j25有所改变。真的很疑惑,为什么joomla开发团队要真么干?有空看来得经常去joomla官网逛逛了。

在发布zmax超级汉化组件后,当运行在j33的环境下的时候,大概出现两个问题:

  • 1,出现代码错误,大概的错误是:
Fatal error: Call to undefined method JController::getInstance() in E:\web\joomla33\administrator\components\com_superhh\superhh.php on line 8
  • 2,界面混乱
  • 3,发现DS常量不能使用

 

针对这3个问题,分别做出如下的修改:

1, 第一个问题,主要是因为在j33中视乎我们应该让控制器派生自JControllerLegacy而不是原先的JController类。同时也需要将视 图类派生自JViewLegacy而不是原先的JView.模型了需要派生自JModelLegacy而不是JModel. 如果你用到了高级类,比喻说JModelList,那么系统会自动完成派生。

2,第二问题,没有明确的方法,只能针对J33再次修改视图的模版文件。其实joomla真的没有处理好从J2.5到J3.3升级。

3,第三个问题,解决的方法是就是自己定义一个DS .

define('DS', "/");

这段代码要放到组件的入口点文件中,这样整个组件都可以使用了DS了。

 

以上都是通过将ZMAX超级汉化升级到j33过程中发现的问题,为经验之谈,并不是joomla官方资料。请斟酌使用。

 

 

 

评论 (0)

  • 最新在前
  • 最佳在前