Fehler nach Migration auf Joomla 4 (MenuItem::$params)

  • Joomla Version
    4.3.4
    PHP Version
    PHP 8.2.x
    Hoster
    Strato

    Hallo,


    ich habe beim Update von Joomla 3 auf 4 leider das Problem, dass mein Custom Template nicht mehr funktioniert und veraltet ist. Ich würde es gerne an J4 anpassen.


    Nach der Migration bekomm ich folgende Meldung: "0 - Cannot access protected property Joomla\CMS\Menu\MenuItem::$params"


    In der Suche hier und bei google hab ich schon geschaut. Dort stand ich soll $item->params->get('aliasoptions'); in (int) $item->getParams()->get('aliasoptions'); umschreiben. Jedoch hab ich keine Ahnung wo ich in den Overrides überall suchen soll. Gibt es die Möglichkeit für eine Art Suchfunktion, wo er mir die Dateien anzeigt bzw. ist das überhaupt der richtige Weg?


    Edit:

    Zwei Einträge habe ich geändert unter Datei „‎/templates/cinemon/html/mod_menu/default.php“ im Template „cinemon“


    if ($item->id == $active_id || ($item->type === 'alias' && (int) $item->getParams()->get('aliasoptions') == $active_id)) {


    $aliasToId = (int) $item->getParams()->get('aliasoptions');


    jedoch ohne Erfolg bisher.


    LG

  • Ist das der Call Stack?


    Er zeigt mir nun folgendes an


    Cannot access protected property Joomla\CMS\Menu\MenuItem::$params

    /mnt/web004/e1/14/57239214/htdocs/templates/cinemon/index.php:48

    Call stack
    #FunctionLocation
    1()JROOT/templates/cinemon/index.php:48
    2require()JROOT/libraries/src/Document/HtmlDocument.php:741
    3Joomla\CMS\Document\HtmlDocument->_loadTemplate()JROOT/libraries/src/Document/HtmlDocument.php:796
    4Joomla\CMS\Document\HtmlDocument->_fetchTemplate()JROOT/libraries/src/Document/HtmlDocument.php:613
    5Joomla\CMS\Document\HtmlDocument->parse()JROOT/libraries/src/Application/CMSApplication.php:1012
    6Joomla\CMS\Application\CMSApplication->render()JROOT/libraries/src/Application/SiteApplication.php:724
    7Joomla\CMS\Application\SiteApplication->render()JROOT/libraries/src/Application/CMSApplication.php:298
    8Joomla\CMS\Application\CMSApplication->execute()JROOT/includes/app.php:61
    9require_once()JROOT/index.php:32


    Zeile 48 in der index.php ist:


    $pageclass = ' ' . $menu->params->get('pageclass_sfx');

  • Dann hast du es nicht gemacht, es heißt nicht "get" sondern "getParams"

    Doch hab ich.


    So sieht die Zeile jetzt aus:

    $pageclass = ' ' . $menu->getParams->get('pageclass_sfx');


    Ich habe hier einen Beitrag dazu gefunden:


    [4.0][Cassiopea] Wrong ItemId: Call to a member function getParams() on null · Issue #30812 · joomla/joomla-cms
    Steps to reproduce the issue Go to article (without mod_rewrite) with wrong itemid /index.php?option=com_content&view=article&id=187&Itemid=64 Expected result…
    github.com


    Diese Codezeile hat mir geholfen:


    $pageclass = $menu !== null ? $menu->getParams()->get('pageclass_sfx', '') : '';


    Jetzt wird die Website angezeigt wieder.


    Jetzt bringt er mir auf der Seite nur noch einen Fehler bei den Beiträgen überall:


    Deprecated: strtotime(): Passing null to parameter #1 ($datetime) of type string is deprecated in /.../htdocs/templates/cinemon/html/com_content/article/default.php on line 61 Abgelaufen

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von techniker mit diesem Beitrag zusammengefügt.

  • ich habe beim Update von Joomla 3 auf 4 leider das Problem, dass mein Custom Template nicht mehr funktioniert und veraltet ist. Ich würde es gerne an J4 anpassen.

    Vielleicht kommen da jetzt immer mehr Fehlermeldungen.


    Du könntest das Cassiopeia nehmen und anpassen.


    Oder schaust dir das mal an, sehr flexibel.

    Konnte damit alle 3er Seiten fast Originalgetreu nachbauen.


    Teilweise in Verbindung mit diesen Templates.

  • Danke. Das ist mir leider zu aufwendig und damit kenne ich mich nicht aus.


    Ich hab jetzt fast alle Fehler weg. Der strtotime Fehler lag an der Umstellung von PHP7 auf PHP8, weil ich bei Strato direkt auf PHP 8.2 umgestellt hab. Das hab ich wegbekommen, indem ich einfach nen String caste. Danach kam noch der Fehler mit dem "Abgelaufen" Button. Wurde hier im Forum schon behandelt und konnte dadurch gelöst werden. Den com_finder Ordner hab ich noch umbenannt. Das wars dann auch. Hab jetzt alle Fehler weg und das Template läuft unter 4. Danke trotzdem für die Hilfe.


    Ich weiß nicht ob es das schon gibt hier, aber vielleicht wäre so ein Fehler->Lösungs Thread nach Migration von 3 auf 4 nicht schlecht :)