Datenausgabe mit Datenbank-Berechnungen

  • Hallo zusammen,


    ich soll aus bestimmten Daten aus der Joomla-Datenbank ein Dokument erzeugen, welches mir diese Daten irgendwie aufbereitet.

    Daher muss ich mir zunächste bestimmten Listen generieren, die dann darauf aufbauende andere Listen erzeugen.


    Grundsätzlich nix wildes... aber wie kann ich ein Dokument (z.B. einen Beitrag) generieren, der auch Inhalte aus der Datenbankberechnung beinhaltet.


    Ich hätte jetzt als erstes einfach ein PHP-Skript gebaut, was mir eine Ausgabe generiert und dann irgendwie anzeigt.


    Aktuell hab ich noch keine Plan, wie es grundsätzlich gehen sollte... daher frag ich mal ganz unvoreingenommen nach irgendwelchen Ratschlägen, wie ihr das macht.


    Eine Komponente als Alternative wäre vermutlich zu aufwändig :-)

  • Würde ich mit einem Content-Plugin machen.


    In der Methode onContentPrepare kannst du deine Berechnungen machen und anschliessend einen HTML string zurückgeben. Dieser wird dann in deinem Beitrag angezeigt.


    https://docs.joomla.org/J3.x:Creating_a_content_plugin

  • Okay... jetzt erstmal sage ich, ich glaube ich habe verstanden, was du meinst.


    Ich erzeuge mein eigenes Plugin, welches ich in einem Content / Beitrag nutzen werde. Über die damit erzeugt PHP-Datei werde ich meinen Content erzeugen... wie ist mir noch nicht klar, aber ich würde mal sagen, einfache Ausgabe via HTML, du es beschreibst? Also soll ich quasi den kompletten Output in der PHP-Datei erzeugen lassen, wie ich auch ohne Joomla machen würde?

    Ich kann dann aber trotzdem auf die ganzen Funktionen von Joomla zugreifen? Datenbankabfragen usw. oder muss ich dann den Connect auf die DB quasi wie von extern generieren?


    Gäbe es auch noch Alternativen? Ich frage nur, weil ich gerne verstehe, was für Möglichkeiten hier möglich wären?


    Jetzt stellt sich mir nur die Frage, welchen Moment ich nutzen soll, um das Plugin laufen zu lassen. Meine Überlegungen gehen in diese beiden Richtugngen:

    • onContentBeforeDisplay : This is a request for information that should be placed immediately before the generated content.
    • onContentPrepare : This is the first stage in preparing content for output and is the most common point for content orientated plugins to do their work. Deine Empfehlung ging ja eher in Richtung diesen Zeitraums.

    Dann ist weiterhin die Frage... wie aktiviere ich das Plugin? Und wenn ich es freigebe / nutze, könnte es jeder in allen beliebigen Content-Seiten verwenden?


    Aber ansonsten hört sich das schon sehr gut nutzbar an. So kann ich quasi vorab via PHP schon mal die Seite generieren und testen und binde sie dann nur noch in den Content-Bereich ein.


    Vielen lieben Dank für den Tipp.

  • Ich verwende nach wie vor das gerne:

    https://ghsvs.de/programmierer…ner-php-dateien-verwenden


    Andere ähnliche Variante, die ich genauso oft verwende, mit Modul und {loadmoduleid} oder ähnlich. Am Beispiel mod_custom:

    - Eigenen, selbst benannten Modul-Override anlegen. templates/MEiNTEMPLATE/html/mod_custom/meineAbfrageMitListe.php

    - Editor leer lassen.

    - In die Datei deinen Code für Abfrage und HTML-Ausgabe.

    - Im Modul im Feld "Layout" "meineAbfrageMitListe" auswählen.

    - Mit {loadmoduleid ...}-Button in Editor einfügen, der auch ansonsten leer sein kann.


    Da man ja auch in Modulen, den aktuell angezeigten Beitrag ermitteln kann, falls nötig etc. pp....


    Vorteil bei den beiden Varianten, ebenso wie beim Plugin: Man bewegt sich schon im Joomla-Framework. Kann also Features und Klassen nutzen und die Datei durch defined('_JEXEC') or die; vor Browserzugriff schützen wie gewohnt.


    Außerdem oft "schön": Ein Plugin wird jedes mal, auch unnötig "bemüht". Bei einem Modul kann man über Menüzuweisung einschränken, wann es überhaupt beachtet werden soll. Mit dem Advanced Module Manager von Regular Labs noch gezielter. Ob der dann allerdings die gesparte Last wieder auffrist, kann ich nicht sagen ;-)

  • Irgendwie hab ich einen Denkfehler oder versteh gerade nicht, was ich falsch machen.


    Ich habe mich zunächst am Link von Elfangor93 - also der Doku aus Joomla - versucht umzusetzen...

    Und leider funktioniert es nicht.

    Wenn ich mal später mehr Zeit habe, versuche ich den Alternative-Vorschlag von Re:Later...


    Hier jetzt zu meiner Beschreibung und dem Problem genau:


    als erstes, was ich angelegt habe:


    DOMAIN.de/media/includes_meineModule/ (als Verzeichnis angelegt)

    darin gibt es die Dateien, die von mir erzeugt wurden:
    meinModul.php

    meinErsterTest.php


    unter Protostar dem aktuell genutzten Template habe ich in der Datei

    Domain.de/templates/protostar/html/modules.php

    am Ende den Quellcode eingefügt:


    Anschließend bin ich von der Dateiebene weg in das Backend von Joomla.

    Dort habe ich ein neues Modul erzeugt.

    Namen: meinTestModul

    unter Erweitert habe ich zunächst none stehen.

    Damit kann ich im Moduleditor einen MusterText eingegeben.


    Anschließend habe ich einen Beitrag erstellt, in dem ich das Modul lade. Wenn ich im Frontend diesen Beitrag anzeige, sehe ich die Daten, die ich im Moduleditor eingetragen habe.


    Soweit funktioniert es erst mal.


    Jetzt habe ich das Modul meinTestModul verändert.

    Unter Erweitert habe ich den Modulstil auf Wunschmodulname geändert.

    Jetzt müsste doch eigentlich in Frontend bei der Anzeige des Beitrages der Inhalt der PHP-Datei angezeigt werden. Aber leider funktioniert das nicht.


    Liegt es daran, dass ich immer noch unter position position-3 eingetragen habe?

    Hier müsste lt. der verlinkten Beschreibung als Position der Dateiname der PHP-Datei unter media/includes_meineModule/meinModul.php also meinModul


    aber trotzdem wird im Frontend nichts angezeigt :-(


    Hier ist meine Überlegung... im Template Protostar gibt es doch gar kein andere Position meinModul? Die muss ich doch auch noch irgendwie anlegen...


    oder hab ich jetzt irgendwelche Verständnis und Umsetzfehler drin?


    Kannst du mir nochmal weiterhelfen?

  • Wie sieht den der Inhalt aus von:

    meinModul.php

    meinErsterTest.php


    Hier ist meine Überlegung... im Template Protostar gibt es doch gar kein andere Position meinModul? Die muss ich doch auch noch irgendwie anlegen...

    Siehe diesbezüglich z.B. auch:

    https://www.time4joomla.de/joo…lposition-im-beitrag.html

    Ja, das gibt es schon mindestens seit Joomla! 1.5

  • Liegt es daran, dass ich immer noch unter position position-3 eingetragen habe?

    Hier müsste lt. der verlinkten Beschreibung als Position der Dateiname der PHP-Datei unter media/includes_meineModule/meinModul.php also meinModul

    Antwort:

    Ja, auch dies muß sein, sonst wird deine meinModul.php nicht verwendet !

  • Hallo Sieger66 ...


    aktuell bin ich leider nicht zuhause sondern nur im Urlaub. Ich teste gerne deine Hinweise, wenn ich wieder am PC sitze :-)

    Wollte mich nur melden, weil du dir so eine Mühe machst und antwortest...

    Wenn man sich da nicht meldet, wenn man Hilfe bekommt, finde ich das sehr respektlos. Daher nur der kurze Hinweis von mir.

    Danke schon mal und ich schaue mir das gerne an, wenn ich wieder zurück bin.

    Dann antworte ich auch sicher wieder darauf, was es bei mir verändert hat.


    Gruß - aktuell aus dem Urlaub.