Eigenes Modul: Modul-Params über helper.php laden

  • Hallo miteinander,


    ich habe eine für Joomla-Profis sicher einfache Frage:


    In einem eigenen Modul kann ich ja meine Parameter theoretisch direkt im (default-)Template zur Verwendung/ Ausgabe laden, bspw. $domain = $params->get('domain');

    Das funktioniert in meinem Modul auch.


    Nun möchte ich das jedoch über eine helper.php erledigen, damit alles schön aufgeräumt etc. ist. Es ist schon alles eingerichtet und funktioniert soweit, d.h. ein


    Code
    public static function getText()
    {
    return 'testText';
    }


    in der helper.php führt in der Kette zur Ausgabe im Frontend.


    Hier endet jedoch die Joomla-Dokumentation und ich frage mich, mit welcher Funktion ich über die helper.php meine params laden kann, statt direkt in der default.php. Und wenn die dann in der helper.php geladen werden müssen die ja wiederum in meiner [modul].php aufgerufen werden?!


    Danke für Hinweise

    Tim

  • Der übliche Weg ist, deiner function getText() eben die $params weitezureichen. getText($params).


    Wenn du mit modernerem Modulaufbau arbeitest und es um Ordnung geht, da gibt es die [modul].php gar nicht mehr, dann kannst die später benötigten Einzeldaten auch in der Dispatcher.php, mit Hilfe des Helpers, schon mal vorab als "stinknormale" Variablen zusammen sammeln lassen. Stichwort getLayoutData().


    Hier wird z.B. die Variable $list vorbereitet: https://github.com/joomla/joom…er/Dispatcher.php#L37-L44 und die $params verstecken sich in $data['params']


    Könntest also auch ein $data['meinText'] = 'testText'; da einbauen und hättest dann später direkt Zugriff via echo $meinText;


    Musst aber aufpassen für welche Joomla-Versionen du das Neue programmierst. Unter 4.3 funktioniert das garantiert alles. Unter 4.2 muss man teils schon aufpassen. Frühere geht gar nicht. Und ist ein bisschen Einarbeitungszeit. Läuft dann aber auch nach Schema-F.

  • Sehr flotte und ausführliche Antwort, danke dafür.


    Aber ich verstehe ehrlich gesagt fast nur „Bahnhof“. Auch weil die Doku von Joomla 4 (noch) mit der modul.php arbeitet und die so auch in der neuesten 4er Version noch in den Joomla-eigenen Modulen Anwendung findet. Also wo ist da dann der Schnitt zu „moderner“ ?


    Macht man das denn alles allein aus Ordnungsgründen?


    Und gibt es nicht irgendwo eine vernünftige! Doku zu all den Helpern und Co? Oder bin ich da zu sehr von Typo3 verwöhnt? 😉

  • Und gibt es nicht irgendwo eine vernünftige! Doku zu all den Helpern und Co?

    Wenn Du das für 4.3.x und höher bauen möchtest, dann ist die beste Doku der aktuelle Code auf github. Siehe Link von #2

    Wenn es ggf. auch in älteren Versionen verwendet werden soll, dann könntest Du die Dokus auf der Joomla-Seite nehmen.

    Das Problem bei den Dokus ist aktuell, dass die Änderungen und zukünftigen Verbesserungen schneller entwickelt werden, als man mit der Doku hinterher kommt. Aus diesem Grund scheuen sich auch viele wieder neue Bücher zu schreiben, da das Buch zur Herausgabe schon wieder veraltet ist.


    Aber da das alles Open Source und ein Gemeinschaftsprojekt ist, ist jeder eingeladen sich mit daran zu beteiligen. Dazu gehört neben der Weiterentwicklung auch das Testen, Fehler melden, sowie auch das Schreiben der Dokumentation. ;)

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • und die so auch in der neuesten 4er Version noch in den Joomla-eigenen Modulen Anwendung findet. Also wo ist da dann der Schnitt zu „moderner“ ?

    Hast natürlich Recht. Die großflächige Umstellung wurde wohl auf Joomla 4.4 verschoben. Ein paar sind schon "modern". Wenn's dich interesseirt kannst hier mal durchscrollen, wo "mod_xyz" und was mit "new structure" steht. https://github.com/joomla/joom…ulls?q=is%3Apr+structure+


    Hätte ja sein können, dass du zu den Forschern gehörst ;)


    Aber geht ja auch noch länger die alte Variante und da habe ich dir ja eigentlich Antwort gegeben

    Der übliche Weg ist, deiner function getText() eben die $params weitezureichen. getText($params).

    Genauer geht halt nicht, weil wir deinen Code ja nicht kennen.

  • Noch als Nachtrag: Module-Struktur ab Joomla 4.3. Rudimentäres Beispiel. (Neu strukturieren mit Provider und Dispatcher.)


    Zitat

    "Man muss ja nicht! Aber man kann Module ab Joomla 4.3 mit einer "moderneren" Grundstruktur aufsetzen. So fallen seit vielen Jahren übliche Dateien raus und neue kommen dazu; inklusive neuen Ordnern. Als Autodidaktdummdudler bin ich gar nicht in der Lage, alles wissenschaftlich korrekt zu beschreiben. Aber vielleicht ja gar nicht schlecht, wenn ich mich in meinem kurzen Überblick auf Wesentliches beschränke?"