+ Antworten
Ergebnis 1 bis 6 von 6

Thema: In eigener Komponente Parameter anderer Komponenten setzen

  1. #1
    Neu an Board
    Registriert seit
    24.06.2007
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard In eigener Komponente Parameter anderer Komponenten setzen

    Hallo liebe Joomla-Entwickler,

    ich habe da mal eine Frage. Zurzeit entwickele ich eine eigene Komponente, in der registrierte FrontendUser benutzerbezogene Daten im Frontend eingeben, die dann allen Benutzern in einer "Suche" zur Verfügung stehen.


    Auf meiner Komponentenseite soll sich nun der registrierte Benutzer einloggen können. Dazu stelle ich auf der Komponenten-Seite den Link zum Login zur Verfügung:
    HTML-Code:
    <a href="index.php?option=com_login>Login</a>
    Bei Betätigung dieses Links wird die Login-Seite aufgerufen. Jedoch sind zum Beispiel die Texte und weitere Parameter wie z.B. das Redirect nach dem Login nicht gesetzt. Ist es möglich innerhalb meiner Komponente Parameter anderer Komponenten zu setzen?

    Über Hilfe würde ich mich sehr freuen!

    Gruß
    HUGI

  2. #2
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Ja, das ist möglich, allerdings habe ich noch nicht genau verstanden was du genau vorhast.

    Grüße
    ec

  3. #3
    Neu an Board
    Registriert seit
    24.06.2007
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Erst einmal vielen Dank für die schnelle Reaktion.

    Also, zum Projekt:
    Auf einer mit Joomla realisierten Website soll eine Veranstaltersuche für bestimmte Veranstaltungen für Kinder und Jugendliche implementiert werden.

    Dazu wird es zum einen eine Suche geben, in denen Kinder/Jugendliche/Eltern mithilfe der Eingabe bestimmter Metadaten Veranstaltungen suchen können.

    Veranstalter sollen die Möglichkeit bekommen ihre Veranstaltungen für die Suche einzutragen. Dazu ist ein Login nötig. Dieses Login/Registrierung/Sessionhandling/Rechteverwaltung möchte ich über Joomla abfackeln.

    Kommen wir zum Workflow für einen Veranstalter:
    1. Er geht auf die Seite mit der Veranstaltersuche (Komponente). Dort gibt es ein Link zum Login.
    2. Der Link ruft die Komponente "com_login" auf. Der Veranstalter gibt sein Login an und klickt auf OK. Nun landet er auf der Startseite der Website. Ich möchte aber, dass wieder auf meine Komponente verwiesen wird um dort das Menü für den eingeloggten Veranstalter anzuzeigen. Dafür muss ich aber die Parameter der com_login beeinflussen um ein Redirect zu definieren!

    Verständlicher????

  4. #4
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Ja, das kann ich nachvollziehen. Statisch kann man ja immer ein redirect sprich eine
    Umleitung setzen. Die einzige Lösung auf die Schnelle, die mir einfällt wäre diese.
    Du erzeugst in der Komponente einen Link auf das Loginformular.
    HTML-Code:
    <a href="index.php&option=com_login&Itemid=3">Bitte einloggen</a>
    und ergänzt das Ganze mit

    PHP-Code:
    <?php
       $redirect 
    urlencode($mosConfig_live_site.'/index.php?option=com_suche&task=machwas&Itemid=9');
    ?>
    <a href="<?php echo $mosConfig_live_site?>/index.php?option=com_login&amp;Itemid=3&amp;redirect=<?php echo $redirect?>">Bitte einloggen</a>
    Dann hacken wir ein wenig die Loginkomponente in components/com_login/login.php
    PHP-Code:
    <?php
    //Orientierung, das steht schon da
    // load the html drawing class
    require_once( $mainframe->getPath'front_html' ) );

    global 
    $database$my;
    global 
    $mosConfig_live_site;

    //Bereitstellung des neues Parameters
    $return mosGetParam$_GET'redirect'null );
    //wenn null setzte aktuelle Seite, wichtig für modullogin
    if(is_null($return))
    {
        
    //steht da schon, nur verschoben
        
    $return mosGetParam$_SERVER'REQUEST_URI'null );
    }
    else
    //wenn nicht null
    {
        
    //am anfang der Umleitung muss [url]http://www.livesite.de[/url] stehen
        //wir wollen ja nicht, dass uns irgendein Witzbold auf die Seite leitet, die URL anpasst und 
        //uns dann nach dem Login nach "google" weiterleitet.  
        
    $regex '^('.$mosConfig_live_site.')';
        
    //url decodieren
        
    $return urldecode($return);
        if (!
    eregi($regex,$return))
        
    //sicherstellen, dass man nicht durch einen Link von der Seite geleitet wird. Hack etc. - sonst [url]http://www.livesite.de[/url] setzen
        
    {
            
    $return $mosConfig_live_site;
        }
    }
    // & zu &amp; wandeln - steht da schon
    $return ampReplace$return );

    //etwas tiefer - $return für $mosConfig_live_site  setzen
    $params->def'login'$return );

    //das wars dann...
    ?>
    Gruß
    ec

  5. #5
    Neu an Board
    Registriert seit
    24.06.2007
    Beiträge
    6
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard könnte gehen

    Erst einmal danke für die schnelle Antwort.

    Das könnte gehen,
    ist aber nicht im Sinne des Erfinders, da für meine Komponente ja nicht die Modifizierung anderer Komponenten nötig sein soll. Wenn man jedoch eh in einem Link die Itemid angibt, kann man in diesem Menüobjekt die Login-Komponente einbauen und mit den entsprechenden Metadaten füllen. Wäre eine Möglichkeit - ist aber nicht "elegant". :-) Das gleiche Problem habe ich ja auch mit der Bearbeitung der Login-Daten, die über die Komponente com_user task=UserDetails geht. Klicke ich dort auf Speichern landet der Benutzer wieder schön auf der Startseite :-(

    Egal... dann muss man da halt ein wenig frickeln. Ich habe ja eigentlich auch nur gehofft, es gibt eine einfache Lösung zur Übergabe von Parametern einer Komponente, die gibts aber wohl nicht :-(

  6. #6
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Sicherlich gibt es noch einige Lösungen mehr, die sind aber alle nicht im Core implementiert.
    Natürlich kann du auch auf die Menü Parameter zugreifen etc. aber nicht sinnvoll schreiben.
    Es gibt also derzeit keine Schnittstelle, die das ermöglicht. Der Ansatz über die redirect
    URL in der URL ist eigentlich die gängigste Praxis, sicherlich geht das auch über eine
    Session etc, aber über einen Hack in Login kommst du nicht rum. Die einzige Möglichkeit
    wirklich von außen etwas zu machen war den Parameter für den USer in der Datenbank
    zu setzen. Das heißt, dass man für den Moment des Klicks die Datenbank neu beschreibt.
    Sicherlich nicht wirklich zu empfehlen und sehr fehleranfällig, unpraktisch.

    Die einzige saubere Lösung wäre, die gesamten Loginbereich für deine Zwecke nachzubauen
    und entsprechend zu klonen. Dann verwendest du nicht das Loginformular, sondern
    dein eigenes. Das wäre die Lösung ohne Hack,die entsprechenden Methoden zum
    Redirect auf das Loginformular kann man mit Hilfe eines System Mambots von außen
    setzen. Ganz kleines Ding.

    Gruß
    ec

  7. Erhielt Danksagungen von:


+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein