Menu Image erzeugt Fehlermeldung

  • Joomla Version
    4.3.2
    PHP Version
    PHP 8.2.x
    Hoster
    schwarzkuenstler und ionos
    Link (URL) zur Seite mit dem Problem
    http://www.web-wartung.de/

    Hallo allerseits,

    ich bleibe gerade an einem blöden Problem hängen: Statt Text würde ich gerne für meinen ersten Menü-Punkt ein Bild verwenden. Unter "Linktyp" in der Menükonfiguration kann man das ja einstellen: "Bild zum Link". Ich erhalte aber im Frontend folgende Fehlermeldung, wenn ich ein Bild wähle: "Cannot access protected property Joomla\CMS\Menu\MenuItem::$params" (dann noch veraltetes Lesezeichen usw.). Die Fehlermeldung bekomme ich sowohl bei meinem eigenen Template, als auch bei Cassiopeia. Ich habe das bei zwei Providern getestet (ionos und schwarzkünstler), überall das gleiche Problem. Hat jemand eine Ahnung, woran das liegen könnte? Danke schon mal!

  • Probiere das, damit du die Datei findest und poste Ergebnis: Fehler finden durch detailliertere Fehlermeldung. Debug-Modus. Call stack.


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


    Hintergrund ist veralteter Joomla code. Man darf die params von Menüs und Menüeinträgen nicht mehr direkt abrufen (da jetzt "protected"), z.B.

    Code
    $item->params

    sondern muss so machen

    Code
    $item->getParams()

    Also vermutlich ein mod_menu-Override.

  • Danke euch! Ich denke, ich habe den Fehler jetzt gefunden.

    Ich verwende das Modul Simple Responsive Menu und in dessen "default_component.php" habe ich zwei Zeilen verändert:

    1. statt

    if ($item->params->get('menu_text', 1))

    jetzt

    if ($item->getParams('menu_text', 1))


    2. komplette Zeile gelöscht:

    $linktype .= '<span class="image-title">' . $item->title . '</span>';


    Letztere musste ich löschen, weil permanent Bild UND Titel angezeigt wurden, obwohl ich "Menutitel anzeigen" auf "Nein" gestellt hatte. Das Löschen der Zeile zieht halt nach sich, dass man den Titel jetzt gar nicht mehr anzeigen lassen kann. In meinem Fall ist das aber verkraftbar. In der Hamburger-Menu-Darstellung verschwindet das Bild und der Titel ist jedenfalls wieder da.


    Liebe Grüße

  • Ich habe die aktuelle Version (1.17) des SR Menus installiert.

    Dass es nicht die Ideallösung ist, ist mir auch klar, aber es läuft ja jetzt.

    Ändere vielleicht auch deine Schriftart im Menü.

    Die ist so schlecht lesbar, dass es nicht nur für Menschen mit Sehbehinderung schwer wird.

    Bei mir am Rechner und am Laptop ist die gut lesbar. Vielleicht könnte ich das letter-spacing noch ein bisschen erhöhen. Ansonsten sind Schriften ja auch Geschmackssache.

  • Nein, Barrierefreiheit ist keine Geschmackssache.

    Egal, musst du wissen.

    ...ich bin ja noch nicht fertig. Das muss am Ende natürlich für alle gut lesbar sein.

    In meinem Template steckt viel Schweiß und Verzweiflung: Das war mal eins für joomla 1.5 (!) und hat seither alle Versionswechsel mitgemacht. Es ist nicht umfangreich, aber ich bekomme damit (fast) alles hin, was ich möchte.


    Auf jeden Fall danke für eure Mühe! Das ist immer ein riesen Pfund, dass ihr euch die Zeit nehmt.

  • In meinem Template steckt viel Schweiß und Verzweiflung: Das war mal eins für joomla 1.5 (!) und hat seither alle Versionswechsel mitgemacht. Es ist nicht umfangreich, aber ich bekomme damit (fast) alles hin, was ich möchte.

    Das finde ich auch toll. Respekt dafür. Ich kann das nicht.


    Aber ehrlich gesagt: Designmäßig ist ja nichts vorhanden.


    Vielleicht noch was zum probieren:


    Astroid-Framework

  • @

    Code
    if ($item->getParams()->get('menu_text', 1))

    Bei härterem Fehler berichten oder kommenden PHP-Versionen wird die erste Variante vermutlich sogar zum Aufhängen führen.

    Danke!

    Eine Frage noch: Sollte ich den Entwicklern des SR Menu eine Nachricht mit deinem Code schicken? (mit Quellenhinweis)

  • Eine Frage noch: Sollte ich den Entwicklern des SR Menu eine Nachricht mit deinem Code schicken? (mit Quellenhinweis)

    Wäre wohl nicht falsch. Das getParams() sollte auch unter Joomla 3 funktionieren; soweit ich sehe. Somit wäre dann der Fix für beide Joomla-Versionen geeignet. Halt überall da, wo im Moment $item->params verwendet wird. Ich habe noch eine Stelle gefunden. Müssen ja nur durchsuchen.