Eigenes Adressmodul mit mehreren Ergebnisseiten erstellen

  • Hallo Allerseits,
    ich bin gerade erst hier angemeldet, weil ich gerade nicht mehr weiterkomme. Ich arbeite schon länger mit Joomla und auch mit Templateerstellung usw. Nun habe ich ein neues Projekt, welches mich irgendwie stark herausfordert. Ich versuche das mal zu formulieren:

    Aufgabenstellung: Auslesen ein Datenbanktabelle mit Adressen und Sonderfeldern (ca. 20 Spalten) --> dann Ausgabe im Beitrag als Link --> Klick auf Link führt zur Detailansicht.

    Nun habe ich mir dazu ein kleines Modul gebastelt, welches bei der Installation die Tabelle anlegt und die nötigen Informationen einspielt. Das klappt auch einwandfrei. Da ich mich mit Modulerstellung noch nicht so richtig beschäftigt habe, erfolgt das aktuell so (In Klammern die betreffende Datei dazu):

    Im Modulaufruf (mod_meinmodul.php) werden die nötigen Informationen aus der Tabelle gelesen (helper.php)


    und als Link ausgegeben (tmpl/default.php):


    Wenn ich auf den Link klicke, will ich eine weitere Seite innerhalb des Moduls haben, die eine Detailansicht des angeklickten Links ausgibt. Wie erreiche ich das? Jemand eine Ahnung?


    Vielen Dank schon mal. Markus

  • Hängt von der menge der Daten ab.


    Man kann alle Detaildaten schon generieren im Modul, versteckt sie erst bspw. mit einem display:none; und zeigt sie bei Klick z.B. mit einem JQuery show() oder toggle() oder ähnlich an.


    Wenn man die Daten dynamisch laden will, kann man mit Ajax-Javascript arbeiten. Joomla bietet dafür eine Bibliothek an, die dei Sache erleichtern kann und keine Komponente benötigt.


    Ich habs hiermit gelernt:
    https://github.com/Joomla-Ajax-Interface/Ajax-Session-Plugin
    Da gehts halt um Session-Manipulation unter Nutzung von Ajax. Man kann aber natürlich auch andere Daten abholen, z.B. Datenbank abfragen anhand URL-Parameter usw.


    Ähnliches Schema in einem Modul:
    Der verwirrliche Hinweis "This module is designed to interact with the Ajax Session Plugin to update a session array via Ajax." stimmt NICHT. Das Modul läuft autark, macht seine eigene Ajax-Abfrage, braucht das Plugin nicht.
    https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module
    Da gehts halt um Session-Manipulation unter Nutzung von Ajax. Man kann aber natürlich auch andere Daten abholen, z.B. Datenbank abfragen anhand URL-Parameter usw.



    Die empfangenen Daten kann man dann dynamisch in einem DIV-Container, z.B. per JQuery html() oder text() oder ähnlich anzeigen.



    Hier eine Kurzanleitung zu com_ajax:
    https://github.com/Joomla-Ajax…nt/blob/develop/README.md


    weitere Anleitung:
    https://docs.joomla.org/Using_Joomla_Ajax_Interface

  • Ich würde mit POST-Parametern (bei Links mit GET-Parametern) arbeiten.
    Über die GET lässt sich dann im Modul definieren, was es anzeigen soll.
    So kann man schnell und einfach die Anzeige anpassen.


    Die Daten per Ajax zu laden und anzuzeigen kann man machen, wenn nur ein Teil im Modul dynamisch gesetzt werden soll. Wenn sich allerdings die Ansicht im Modul komplett auf eine "Unterseite" umstellen soll, ist das eher nicht zu empfehlen.


    Von Optionen wie "display: none" würde ich definitiv abraten, da die Daten trotzdem geladen und im HTML-Code enthalten sind. Da erhöht die Datenmenge extrem und jeder Mobile User wird dich dafür verfluchen, weil der Traffic im Winde verweht.


    PS:

    Code
    // helper.php
    $query = $db->getQuery(true)
    ->select($db->quoteName(['id','Name1','PLZ','Ort']))
    ->from($db->quoteName('#__meinmodul'))
    ->order('PLZ ASC');
    $db->setQuery($query);


    Funktioniert auch und schreibt sich schneller da nicht jedes Feld eine neue Zeile braucht. Damit bleiben auch größere Queries lesbar.


  • Das sind immer so Pauschalaussagen...
    Könnte ich jetzt genauso flach behaupten: Wegen Suchmaschinen sollte man es so machen, da die Daten für diese lesbar geladen werden.


    Es wäre nett, wenn man seine eigene Meinung auch mitteilen kann ohne gleich verurteilt zu werden.
    display: none hat uns bereits oft Probleme bereitet, daher versuchen wir diese Option weitestgehend zu vermeiden.


    Ich verurteile ja auch niemand, ich teile nur meine Meinung und Empfehlungen auf Grund der Erfahrungen mit.

  • Du warst es, der "definitiv abgeraten" hat von einem von mir eingebrachten Vorschlag, der einer von zweien war.


    Alle eingeleitet durch "Hängt von der menge der Daten ab.".


    Der Wunsch des TE:

    Wenn ich auf den Link klicke, will ich eine weitere Seite innerhalb des Moduls haben, die eine Detailansicht des angeklickten Links ausgibt


    Deine Aussage bzgl. Ajax ist für mich so auch nicht nachvollziehbar. "Besser per POST oder GET-Daten machen". Du lädst also lieber die komplette Seite neu als nur bestimmte Teile davon dynamisch nachzuladen? Auch AJAX arbeitet mit URL-Parametern (GET) oder POST, halt im Hintergrund.
    Joomla unterstützt eine recht einfache Integration von AJAX / com_ajax via Modulen und Plugins und zukünftig wohl auch via Templates-"Helfern". Sowohl POST als auch GET oder gemischt. Wie's beliebt. Das macht eine Zusammenfassung ähnlicher Codes / Anfordernisse an einer zentralen Stelle möglich ohne sich Komponenten schreiben zu müssen oder die Codes jeweils nur in der einzelnen, betreffenden Erweiterung nutzen zu können.


    display: none hat uns bereits oft Probleme bereitet, daher versuchen wir diese Option weitestgehend zu vermeiden.


    Damit ist jedes Accordion, jeder Slider, Tab und was es so alles gibt, grundlegend ein Problem? Letztlich sorgen solche Techniken dafür, dass Mobilgeräte-User auf Ihren Popel-Displays die Übersicht behalten.


    Alles Abwägungssache. Eine private Hobbyseite braucht sich keine Millisekunden-Mikrooptimierungen antun. Man kann sich's auch unnötig kompliziert machen.