Beim Update von PHP 5.2 auf PHP 5.4 kommt es bei Joomla 1.5.8 und wahrscheinlich auch weiteren Versionen des 1.5er-Zweigs zu einem ärgerlichen Fehler:
Im Backend werden Untermenüs nicht mehr angezeigt, obwohl im Frontend alles komplett ist.
Der Grund dafür:
Der automatische Class-Loader von Joomla schlägt fehl und das JHTMLMenu Objekt wird nicht erzeugt.
Durch Einfügen der blau hinterlegten Zeilen in der Datei
/libraries/joomla/html/html.php
lässt sich das Problem beheben:
Die Zeilennummern können bei Joomla > 1.5.8 variieren. Am besten sucht man nach “return call_user_func_array” und fügt die Zeilen unmittelbar darüber ein.
Der Patch erzeugt das JHTMLMenu-Objekt explizit neu und ruft die Funktion .treerecurse() mit den entsprechenden Parametern auf. Genau diese Funktion rendert die Anzeige der Untermenüs.
Hier noch einmal zum Kopieren und Einfügen:
1 2 3 4 5 6 |
// MOD: Fixed missing menu items under PHP 5.4 // if($className == 'JHTMLMenu' && $func == 'treerecurse') { $c = new JHTMLMenu(); return($c->treerecurse($args[0],$args[1],$args[2],$args[3],$args[4],$args[5],$args[6])); } |