Joomla4.x对菜单系统做了一些调整,这些调整是不兼容J3的。在做J3升级到J4的过程中,会直接导致页面崩溃的问题。

1,菜单项params参数的访问权限由public改为protected

在J3.x(包括J2.x)之前,开发者可以直接访问$menuItem->params 来获得菜单的参数设置。但在J4.x后,由于核心API将params的访问属性从public该为了protected.这就导致之前J3.x上所有使用直接访问params熟悉的代码都无法工作。比如下面的代码:

$aAttr['title'] = htmlspecialchars($menuItem->params->get('menu-anchor_title', '')); 

在J4.x以后,需要菜单就不采用这种方案来实现了。在J4.x(包括J5.x),访问params属性需要使用菜单项提供的getParams()方法来获得。代码如下:

$aAttr['title'] = htmlspecialchars($menuItem->getParams()->get('menu-anchor_title', '')); 

 

2,如何来做兼容转换

实际上上面的代码改变非常的小,但却是会导致致命错误,程序直接崩溃。真不明白joomla核心为什么要做这个变动,真的是坑死开发者了。

那么如何解决问题呢?有两种方案,一种就是手动的调整代码,将直接访问params参数改为getParams()来代替即可。对于少量需要兼容的代码这个方案是可行的。

另外一种就是使用插件。在升级的过程中,我们团队经常遇到这类问题,因此,专门开发了插件。用户只需要启用我们开发的兼容插件,就可以不用手动调整代码,非常的方便。有需要的朋友可以联系我们。本插件并没有上传到应用市场中

 

作者: 樱木花道

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

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前