JModuleHelper::getModule() findet Modul über Titel nicht

  • Hallo Community,


    ich bin dabei ein Dashboard-Modul zu schreiben, in dem verschiedenste Daten aus Joomla als Widgets bereitgestellt werden sollen.
    Als Option soll in einem Widget ein selbst erstelltes Modul (Eigenes Modul) angezeigt werden können.


    Hierfür bin ich bis jetzt soweit:


    Mein Problem hierbei ist jedoch, dass er ein Modul über Modul-Name und Titel nur finden kann, wenn diese gesuchte Modul auch auf der Seite selbst in einer Position angezeigt wird.
    Ist dies nicht der Fall, liefert getModule() ein leeres Modul-Objekt zurück, mit dem an eigtl. nichts anfangen kann.


    Ein Beispiel:
    Modul liegt auf Seite A in Position left.
    Angezeigt werden soll dieses Modul aber dynamisch auch auf Seite B in Position Content.


    Ruft man Seite A auf, funktioniert es einwandfrei.
    Ruft man Seite B auf, kommt ein leeres Modul.


    Meine Frage nun:
    Wie kann ich es erreichen dieses Modul komplett gerendert zu erhalten, auch wenn ich auf einer anderen Seite bin?


    Habe schon so viel versucht, sogar "Seite A" im Hintergrund erzeugen zu lassen (klappt aber nicht, da JDocument das nicht mitmachen wollte).


    Hat einer eine Idee? Ich stecke seit 2 Tagen in dieser Falle...

  • Vielen Dank für die schnelle Antwort :)
    Der Weg funktioniert zwar, habs gerade getestet, aber ist für die Firmen-Webseite leider sehr unpraktisch, da so alle Inhalte doppelt geführt werden müssen. Der Verwaltungsaufwand ist dann leider doch sehr groß.


    Gibt es evtl. über den Code eine Alternative?


    Hatte schon überlegt mit das Module selbst zusammen zu bauen, in dem ich die Daten aus der #__modules-Tabelle lese. Aber da fehlen mir einfach zu viele Hintergrundinformationen, wie ich dieses Modul soweit bekomme, dass es gerendert werden kann. Zudem kommt dann noch dazu, ob die Plugins noch funktionieren oder diese dann auch noch getriggert werden müssen.

  • Als Ansatz. Sehr statisch programmiert. In einem System-Plugin-Event tauscht du die Position aus, wenn bestimmte Bedingungen erfüllt sind. Das Modul muss beiden Seiten zugeordnet sein. Im Beispiel position-8.



    Andere Idee. Im Pluginevent Das Modul aus der DB auslesen, weil es dem aktiven Menü nicht zugeordnet wurde, und im Pluginevent dem Array $modules hinzufügen. Da Joomla abschließend noch mal prüft, ob "die Seite passt", sollte man bspw. zusätzlich $module->menuid dynamisch auf 0 setzen, was gleichbedeutend mit "Auf allen Seiten ist", also immer "passend".


    Das ganze Hartkodierte macht man eigentlich über einstellbare Plugin-Parameter, wenns komplexer werden soll. Da bieten sich bspw. Joomla-Formularfelder wie menuitem, moduleposition, subform etc. für Konfiguration an.
    https://docs.joomla.org/Form_field


    Rattenschwanz garantiert ;)

  • Verwaltungsaufwand ist dann leider doch sehr groß.


    Du hattest nicht geschrieben, dass die Inhalte im Modul statisch sind. Dynamisch aus Joomla ist egal in vieviel Modulen es reingezogen wird. Es gibt aber noch einen Weg ohne zu coden.
    Die Inhalte des Moduls generierst Du in einem Beitrag in einer eigenen Kategorie und lässt diesen über das Newsflash-Modul so oft und wo Du willst darstellen. Der Inhalt wird nur 1x im Beitrag für alle Module geändert.