Übergabe weiterer Variablen via GET an Menu URL

  • Hallo zusammen.


    Folgende Problematik zu lösen:


    Es gebt einen Pfad: https://www.meinedomain.de/liste/


    Hier wird eine Liste von Daten ausgegeben. Die Daten werden aus einer MySQL Datenbank gezogen. Ich kann die einzelnen Datensätze als Link anklicken. Durch klick auf den Link wird die ID (nennen wir Sie $UID) des Datensatzes in der URL per GET übergeben und man wird zu folgendem Pfad weitergeleitet:


    https://www.meinedomain.de/liste/datensatz/


    Hier läuft nun eine separate Joomla-Site mit insgesamt 5 Menüpunkten. Der Datensatz wird erfolgreich im Menüpunkt 1 (also im default Menupunkt) so angezeigt, wie er auch soll. Ich brauche aber teile des Datensatzes auch noch in den anderen Menü-Punkten 2-5. Nun habe ich hier natürlich die Frage zu klären, wie ich die variable $UID nun von Menu-Punkt 1 zu den Menupunkten 2-5 bekomme. Mir ist also nicht klar, wie ich hier GET einsetzen kann, da ich die variable ja nicht an die Menu-URL anhängen kann. Oder gibt es andere, elegantere Lösungsansätze. Bitte beachtet, dass es eine Variable ist, die sich logischerweise ändert, je nach dem, welcher Datensatz ausgewählt wird. Ich kann also keine konkrete und statische Zahl hinterlegen, wie man das mit einer externen bzw. internen URL im Menupunkt ggfs. machen könnte. Ich muss schon mit $UID arbeiten können.


    Jetzt freue ich mich, wieder zu lernen und eure Lösungsansätze zu erhalten.


    Vielen Dank im Voraus.


    Beste Grüße an alle

  • Sorry, Later... Ich dachte, ich hätte mit dem Namen der Domain klar gemacht, dass es sich nur um ein Beispiel handelt. Es ist natürlich nicht meine tatsächliche Domain. Die ist noch gar nicht live. Ich hatte das nur in der Form ausgeführt, um klar zu machen, worum es mir geht. Die Domain ist nur beispielhaft und existiert nicht, daher die Fehlermeldung. Sorry, für das Missverständnis...

  • Das tut mir sehr Leid, das habe ich nicht gesehen bzw. gewusst. Ich habe nun auch keine Möglichkeit mehr gefunden, meinen Post noch dahingehend zu ändern. War jedenfalls meinerseits nicht absichtlich.


    Darf ich denn nun, nach dem Hinweis auf den Fehler und meinem einsichtigen Fehlverhalten trotzdem dann auch noch nach Lösungsansätzen fragen, oder zähle ich nun als Persona non grata?

  • Die Lösung für Joomla, was wir aber in Unkenntnis deiner Seite sowie Codes nicht wissen:


    Du schreibst dir für das Menü (Modul mod_menu) ein eigenes Layout per Override. Also statt wie üblich ein Override der default.php und Unterdateien default_xyz.php, ein selbst benanntes, bspw. dingsbums.php und dingsbums_xyz.php.


    Dann wählst im Modul unter "Layout" das "dingsbums" aus.


    Dann schreibst in der Datei, wo du die Variablen einsetzen willst (auswendig keine Ahnung, welche am geeignetsten ist) unterhalb Zeile

    Code
    1. defined('_JEXEC') or die;

    ein

    Code
    1. use Joomla\CMS\Uri\Uri;

    Weiter gehts mit dem Code um die GET-Variable aus der aktuellen Seiten-URL zu ermitteln. Beispiel: Seite wird unter dieser aufgerufen bzw. erreicht:

    Code
    1. https://example.org/sonstwas?UID=215&diesda=dasda
    Code
    1. $uri = Uri::getInstance();
    2. $UID = (int) $uri->getVar('UID');
    3. $diesda = $uri->getVar('diesda');

    Und im einfachsten Fall, was wir in Unkenntnis deiner Seite aber nicht beurteilen können, hängst die UID jetzt an die Menülinks an:

    Code
    1. $item->flink . '?UID=' . $UID;


    Eine andere Variante wäre mit JavaScript. Im einfachsten Fall per JQuery. Auch hier ist halt ohne Code nix hier machbar.


    Und mit purem PHP fragt man GET-Variablen der URL so ab:

    Code
    1. $UID = (int) $_GET['UID'];
  • Okay, also das hilft mir grundsätzlich schon mal deutlich weiter, auch wenn ich noch nicht am Ziel bin. Daher danke zunächst dafür.


    Folgende Frage noch:


    die URL der Startseite sieht ohne meine Variable nach standard und derzeit noch ohne SEO wie folgt aus:


    https://example.org/jobportal/…=article&id=53&Itemid=101


    Wenn nun meine Variable per GET dranhängt, sieht die URL logischerweise so aus:


    https://example.org/jobportal/…le&id=53&Itemid=101&nr=52


    52 ist meine übergebene Variable in dem Beispiel. Das funktioniert auch auf der Default-Start-Seite problemlos.


    Nun habe ich deine Codevorschläge im Override der Datei default_hip.php wie folgt umgesetzt, was aber leider nicht so wirklich funktioniert hat. Ich kann dir übrigens gerne kurz Zugang geben, um dich in der Seite einzuloggen. Sie ist noch offline und ich möchte Sie auch noch nicht online setzen. Wenn das für dich in Ordnung ist, sende ich dir einen Testzugang, falls du den brauchst.



    Übrigens bei mir hieß das ganze einfach nur mod_menu und nach dem Override wurden folgende Dateien erstellt:


    default.php

    default_component.php

    default_heading.php

    default_separator.php

    default_url.php


    Diese Dateien habe ich nach dem Override dann einfach in der Form umbenannt, dass ich hinter jedem default_ ein hip_dazuwischen gesetzt habe. Nur damit du weißt, was ich bisher angestellt habe... evilgrin


    Also quasi:


    default_hip.php

    default_hip_component.php

    default_hip_heading.php

    default_hip_separator.php

    default_hip_url.php

  • Hallo Sven,

    ich steige zwar gerade nicht durch alle Details deines Problems (und des Modul-Overrides), aber vielleicht helfen meine zwei Tips auch schon weiter:

    1. deine Zeile 14 sollte vermutlich in das foreach (d.h. frühestens Zeile 28), sonst ist ja das "$item" (vermutlich der jeweilige Menüpunkt) gar nicht klar.
    2. Außerdem glaube ich, dass der erste "." in derselben Zeile genaugenommen ein ".=" sein müsste (bedeutet "an String-Wert anhängen"), sonst macht die Zeile gar nix, was sie überdauert (fügt Strings zusammen ohne sie zu speichern).