Benutzer:Buchbergertom: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Die Seite wurde neu angelegt: „ HTML Die Lösung! Nachdem mir Petra in mehreren Schritten aus der Patsche geholfen hat, hier nun die Lösung für alle, die eine Newslettercheckbox in einem…“)
 
(Die Seite wurde geleert.)
 
Zeile 1: Zeile 1:
  
HTML Die Lösung!
 
 
    Nachdem mir Petra in mehreren Schritten aus der Patsche geholfen hat, hier nun die Lösung für alle, die eine Newslettercheckbox in einem Formular einbauen möchten und bei angehakter Box die Email Adresse automatisch in den Newsletterverteiler aufgenommen werden soll.
 
 
    Schritt 1 - Eigenes Modul
 
    Unter /system/modules/ folgende Struktur anlegen
 
    /newslettercheckbox/ (beliebiger Name)
 
    /newslettercheckbox/Newslettercheckbox.php (beliebiger Name - muss aber auch in der config.php dementsprechend angepasst werden -- bei Kleinschreibung hatten wir Probleme mit Typolight, deshalb das große "N")
 
    /newslettercheckbox/config/ (muss so benannt sein)
 
    /newslettercheckbox/config/config.php
 
 
    Schritt 2 - Der Code in der Dateien config.php ('Newslettercheckbox' entspricht der Datei im Modulordner)
 
    PHP-Code:
 
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
 
    $GLOBALS['TL_HOOKS']['processFormData'][] = array('Newslettercheckbox', 'processFormData');
 
    ?>
 
    Schritt 3 - Der Code in der Newslettercheckbox.php (wie bereits erwähnt müssen dieser Name und der Name in der config.php übereinstimmen, ebenso der Klassenname - siehe code)
 
    PHP-Code:
 
    <?php
 
 
    //$arrPost: die aus dem Fromular übermittelten Daten
 
    //$arrForm: quasi die "Konfiguration" des Formulars (Einstellungen aus Formulargenerator)
 
    //$arrFiles: ggf. per Upload-Feldern hochgeladene Dateien
 
 
    class Newslettercheckbox extends Frontend
 
    {
 
      public function processFormData($arrPost, $arrForm, $arrFiles)
 
        {
 
            //print_r($arrPost); So kann man die übergebenen Werte ausgeben lassen - zur Prüfung
 
            //Kontaktformular -> Checkbox für Newsletter aktiviert?
 
            //********************************************************************
 
 
            if($arrForm['id'] == 1) {
 
                  $subscribe = false;
 
 
                if($arrPost['newsletter'] == "Ja") {
 
                    $subscribe = true;
 
                    $PostData = array('email'=>$arrPost['email'], 'FORM_SUBMIT'=>'tl_subscribe','channels[]'=>'1');
 
                    $ch = curl_init("http://{$_SERVER['HTTP_HOST']}/home.html");
 
                }
 
            }
 
 
            //subscribe?
 
            if($subscribe) {
 
                $Post = http_build_query($PostData);
 
                curl_setopt ($ch, CURLOPT_HEADER, 0 );
 
                curl_setopt ($ch, CURLOPT_REFERER, "http://{$_SERVER['HTTP_HOST']}");
 
                curl_setopt ($ch, CURLOPT_POSTFIELDS, $Post);
 
                curl_setopt ($ch,CURLOPT_POST,TRUE);
 
                curl_setopt ($ch,CURLOPT_HTTPGET,FALSE);
 
                $data = curl_exec( $ch );
 
                curl_close ($ch);
 
            }
 
 
        }
 
    }
 
 
    ?>
 
    Schritt 4 - Was bedeutet das?? Worauf muss ich achten??
 
    PHP-Code:
 
    if($arrForm['id'] == 1) {
 
    Hier "1" muss der ID des Formulars entsprechen (siehe Backend Formulargenerator)
 
    PHP-Code:
 
    if($arrPost['newsletter'] == "Ja")
 
    die Checkbox "newsletter" hat den Wert "Ja" -- ebenfalls dem eigenen Formular entnehmen oder lt. Schritt 5 herausfinden
 
    PHP-Code:
 
    $arrPost['email']
 
    'email' entspricht der Feldbezeichnung im eigenen Formular. Somit wird das Feld 'email' automatisch in das Newsletter subscribe Formular eingetragen.
 
    PHP-Code:
 
    $ch = curl_init("http://{$_SERVER['HTTP_HOST']}/newsletter.html");
 
    hier muss der Link zum Newsletteranmeldeformular angegeben werden. Ich konnte bei mir /newsletter.html komplett weglassen, da es sich in meinem Fall auf der Startseite befand.
 
 
    Schritt 5 - Testen und staunen
 
    Sollte eigentlich alles klappen. Man kann sich mit
 
    PHP-Code:
 
    print_r($arrPost);
 
    die übergebenen Werte aus dem Formular anzeigen lassen. Dann sieht man genau, welche Werte übergeben werden! Wie üblich wird eine Aktivierungsmail an den User versandt!
 
 
    Ich hoffe, das war jetzt nicht zu kompliziert!
 
 
    tom --- und Danke noch mal an Petra für den Code!!
 

Aktuelle Version vom 9. Juli 2010, 10:27 Uhr

Ansichten
Meine Werkzeuge

Contao Community Documentation

Dann sollte da auch 3.1.5 stehen. Wenn nicht mach mal Systemwartung, dreh dich im Kreis, ruf: "uga uga uga" und opfer ein kleines huhn... aber nur ein KLEINES, ist ja kein major.

Marc Reimann
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge