Nach Joomla 4 Update kommen Probleme auf

  • Joomla Version
    Joomla 4.4.2
    PHP Version
    PHP 8.2.x
    Hoster
    All-Inkl.com
    Link (URL) zur Seite mit dem Problem
    dev.iaaeu.de

    Guten Tag,


    Ich bin mit der Website betraut, die Probleme macht. Dabei soll ich zurzeit das Update von Joomla 3 auf Joomla 4 bzw. später auf 5 überblicken.

    Mit dem Update auf Joomla 4 kommen aber schon einige Probleme auf.


    Ich habe zur Sicherheit eigentlich schon alle Erweiterungen deaktiviert und habe das Update mit dieser Anleitung gemacht.

    (https://www.youtube.com/watch?v=kwnsrJ_EN2Y)



    Es kommt jetzt aber vor, dass die Testseite ein Problem hat und die folgenden Warnungen in der Debugliste anzeigt:


    Natürlich habe ich schon versucht, das Forum und Google zu fragen, aber ich habe noch keine Antwort gefunden, die das Problem lösen kann.


    Dabei habe ich auch schon einen Blick auf das Template geworfen, dass wir unbedingt behalten wollen, aber selbsterstellt ist.

    Mit der Anleitung habe ich auch schon versucht das Template zu updaten, dafür bin ich aber wirklich zu dumm.

    (https://magazine.joomla.org/al…our-old-joomla-3-template)


    Außerdem habe ich bis jetzt versucht herauszufinden, warum die Debugliste über die Module Helper redet.

    Hat das einen Zusammenhang zum Problem oder bin ich da auf der falschen Fährte?


    Kann mir jemand helfen?


    Vielen Dank


    Joel

  • Was steht denn in modules/mod_iaaeumobilemenu/helper.php in Zeile 87?


    Habt ihr das Modul selber gebaut, oder noch Kontakt zum Autoren?

    Es braucht auf jeden FAll ein Update.

    Also Kontakt nein, aber ich werde es jetzt selber herrausfinden, da wir das ursprünglich auch selber gebaut haben.


    In Zeile 87 steht:


    if (($item->params->get('menu_show', 1) == 0) || in_array($item->parent_id, $hidden_parents))


    ich bin jetzt kein PhP crack, aber ich sehe da jetzt auch kein Problem.

  • Hey, vielen Dank an euch drei und an alle, die mit mir mitgedacht haben!!!



    Ich weiß, im Nachhinein erscheint es so unglaublich einfach, aber es ist alles sehr verwirrend, wenn man keinen klaren Blick hat.



    Es war tatsächlich das Modul, das ich deaktivieren konnte.

    Leider weiß ich nicht, wer es gemacht hat und was daran "kaputt" war.



    Aber jetzt funktioniert es, zwar ohne Menu aber wenigstens liegt es nicht am Template.



    Liebe Grüße

    Joel

  • "$item->params" funktioniert in j4 nicht mehr., "$item->getParams()" aber.


    Du könntest es mal so versuchen:

    Code
    $itemParams = $item->getParams();
    
    if (($itemParams->get('menu_show', 1) == 0) || in_array($item->parent_id, $hidden_parents)) ...

    Und natürlich an alle anderen stellen "$item->params" im helper dann auch durch "$ItemParams" ersetzen.

  • Also ich hab das jetzt mal ausprobiert und die Version:

    Code
    if (($itemParams->get('menu_show', 1) == 0) || in_array($item->parent_id, $hidden_parents)) ...

    hat zu dem selben Crash geführt wie oben und die Änderung mit:

    Code
    if (($item->getParams('menu_show', 1) == 0) || in_array($item->parent_id, $hidden_parents)) ...

    führt zu einem Anzeigen von Fehlermeldungen auf der Websitenoberfläche :D


    Ich würde jetzt nochmal schauen die Fehler zu entziffern und guck was dabei raus kommt.


    Müsste ich in anderen PHP Dokumenten die auf die helper.php verweisen den code von

    Code
    // Include the menu functions only once
    JLoader::register('ModSebMenuHelper', __DIR__ . '/helper.php');
    
    $list       = ModSebMenuHelper::getList($params);
    $base       = ModSebMenuHelper::getBase($params);
    ...

    zu

    Code
    // Include the menu functions only once
    JLoader::register('ModSebMenuHelper', __DIR__ . '/helper.php');
    
    $list       = ModSebMenuHelper::getList($getparams);
    $base       = ModSebMenuHelper::getBase($getparams);
    ...

    ändern?


    Grüße

    Joel

  • Dort wird das Modul mod_iaaeumenu ja noch angezeigt.

    Das ist nur wenn ich es im Original aktiviere.

    Wenn ich es deaktiviere dann funktioniert die Seite auch ohne die Fehlermeldungen (abgesehen davon, dass das Modul das Menu dargestellt hat und jetzt halt weg ist).


    Die Fehlermeldungen kamen davon, dass ich die Lösung von Lunalars, bis jetzt ja noch nicht komplett, eingebaut habe.

  • Hast du auch

    Code
    $itemParams = $item->getParams();

    vor der if-Abfrage eingefügt?


    Die anderen beiden Sachen ($list und $base) haben damit nichts zu tun

    Tatsächlich hatte ich es direkt davor, hab aber eine andere getParams abfrage gefunden und als ich es davor gestellt habe, gab es nur noch eine Error Nachricht auf der Website:


    Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /www/htdocs/w00b031d/dev.iaaeu.de/modules/mod_iaaeumenu/mod_iaaeumenu.php on line 25



    Die mod_iaaeumenu.php ist recht klein.

    Da gibt es aber eine ähnliche abfrage.


    Sollte ich da jetzt auch

    Code
    $params->get

    zu

    Code
    $getparams

    ändern?


    Vielen Dank für die Hilfe!

  • Das sollte sich mit einem default-Wert für das "class_sfx" beheben lassen:

    Code
    $class_sfx  = htmlspecialchars($params->get('class_sfx', ''), ENT_COMPAT, 'UTF-8');


    Nochmal kurz zu "$item->params" vs. "$item->getParams()":

    Es geht hier um die Params des Menuitems. "Früher" konnte man einfach per "$item->params" darauf zugreifen, mittlerweile sind sie aber "protected" und müssen daher erst per "$item->getParams()" "geholt" werden. Daher die Fehlermeldung aus deinem ersten Post: "cannot access protected property ..."


    Der Fehler ist jetzt behoben, oder verstehe ich das falsch?


    Sorry für die vielen Anführungszeichen :)

  • Hallo, ich versuche gerade meine Website von J3.10 auf 4.4.2 zu updaten. Leider bekomme ich auch nach etlichen Versuchen und Backup-Wiederherstellungen Fehlermeldungen im Backend. Mittlerweile habe ich sämtliche Extensions gelöscht, die irgendwie Probleme verursachen könnten - aber immer dasselbe.

    Kann mir jemand helfen?