Contao-Camp 2024
Ergebnis 1 bis 3 von 3

Thema: Weiterleitungsseite für ein Formular bei Multidomain-Installation

  1. #1
    Contao-Nutzer Avatar von Dr. Jo
    Registriert seit
    11.08.2009.
    Ort
    Riehen (CH)
    Beiträge
    205

    Standard Weiterleitungsseite für ein Formular bei Multidomain-Installation

    Hallo,
    ich verzweifle gerade ein wenig: Für eine mehrsprachige Contao-Installation (3.x), die noch dazu auch unterschiedliche Domains für die jeweiligen Sprachen nutzt, möchte ich ein (1) Formular nutzen, um dann im Anschluss die darüber gespeicherten Informationen per Formulardaten-Auflistung wieder ausgeben zu können. Die Datenfelder über Insert-Tags zu übersetzen, ist kein Problem (gewesen), aber die Angabe einer Weiterleitungsseite funktioniert natürlich nur in der einen Sprache - in der anderen Sprache gibts dann 404. Ich habe schon versucht, das mit mod_rewrite abzufangen, aber das klappt nicht, offenbar ist da Contao schneller als die htaccess. Wenn ich keine Weiterleitungsseite angebe, bleibt in der URL-Zeile die URL stehen und der User bekommt eine weiße (leere) Seite zu sehen ... hat jemand eine Idee, was man da unternehmen könnte?

    Danke und Gruß

    Dr. Jo

  2. #2
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Hi,

    keine Ahnung ob es direkt für den EFG eine Lösung gibt, glaube nicht, aber ich habe ähnliches bereits gemacht.
    Dazu musst du allerdings eine kleine Erweiterung schreiben. Alternativ kannst du glaube ich nur zwei verschiedene Formulare erstellen.

    Du benötigst dafür den Hook "parseFrontendTemplate".
    Dort kannst du über $strTemplate checken, ob es sich um ein 'form' Template handelt.
    Dann guckst du im Quelltext wie dein form-Tag bisher ausgegeben wird & ersetzt es in der Funktion. Im ersetzten Teil steht dann bei action= die angepasste Weiterleitungsadresse.
    Über $GLOBALS['TL_LANGUAGE'] könntest du dieses entsprechend ändern.

    PHP-Code:
    if($GLOBALS['TL_LANGUAGE'] == 'de'){
       
    $strJumpToLink 'foo.html';
    }else if(
    $GLOBALS['TL_LANGUAGE'] == 'en'){
      
    $strJumpToLink 'bar.html';
    }
    $strContent str_replace('action="bisheriges_ziel.html" id="formularid"','action="'.$strJumpToLink.'" id="formularid"',$strContent); 


    Wenn du es noch dynamischer möchtest: Ich habe das DCA der Root-Page um eine Seitenauswahl erweitert, wo das Weiterleitungsziel für das Formular definiert wird.
    Dies lese ich dann im Hook aus & setze die Weiterleitung "on-the-fly":

    PHP-Code:
    global $objPage;
    $intJumpToPage $this->PageModel->findPublishedById($objPage->rootId)->deine_angelegte_spalte;
    $strJumpToLink $this->replaceInsertTags('{{link_url::'.$intJumpToPage.'}}');
    $strContent str_replace('action="bisheriges_ziel.html" id="formularid"','action="'.$strJumpToLink.'" id="formularid"',$strContent); 
    Sind alles nur Auszüge meiner Funktion.

  3. #3
    Contao-Nutzer Avatar von rflx
    Registriert seit
    06.08.2009.
    Ort
    127.0.0.1
    Beiträge
    98

    Standard

    Zitat Zitat von Dr. Jo Beitrag anzeigen
    Hallo,
    ich verzweifle gerade ein wenig: Für eine mehrsprachige Contao-Installation (3.x), die noch dazu auch unterschiedliche Domains für die jeweiligen Sprachen nutzt, möchte ich ein (1) Formular nutzen, um dann im Anschluss die darüber gespeicherten Informationen per Formulardaten-Auflistung wieder ausgeben zu können. Die Datenfelder über Insert-Tags zu übersetzen, ist kein Problem (gewesen), aber die Angabe einer Weiterleitungsseite funktioniert natürlich nur in der einen Sprache - in der anderen Sprache gibts dann 404.
    Hallo Dr. Jo,
    eigentlich sollte es auch ganz einfach im form.html5-Template über eine PHP Abfrage funktionieren.

    Bsp:
    PHP-Code:
    if ($this->id == '#form_id#')) {
        if (
    $GLOBALS['TL_LANGUAGE'] == 'de') {
            
    $action $this->replaceInsertTags('{{link_url::*}}');
        }
        else if (
    $GLOBALS['TL_LANGUAGE'] == 'en') {
            
    $action $this->replaceInsertTags('{{link_url::*}}');
        }
    }
    else {
        
    $action $this->action;

    #form_id# muss durch die ID des Formulars ersetzt werden.


    ** EDIT: Leider funktioniert es nicht so wie erwartet da action ja die selbe Seite ist um das Formular zu verarbeiten. Habe jetzt versucht im Formular ein hidden-Feld mit der aktuellen Sprache zu füllen und später in der Weiterleitungsseite dementsprechend weiterzuleiten.

    Cheers,
    rflx
    Geändert von rflx (28.09.2015 um 17:12 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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