Eigene Bestätigungsseite bzw. Bestätigungsmail

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • zwergschwein
    Contao-Fan
    • 23.06.2009
    • 258

    #1

    Eigene Bestätigungsseite bzw. Bestätigungsmail

    Hallo miteinander,

    momentan ist der Hinweis nach Klicken des Bestätigungslinks ja sehr unscheinbar (...ja, ich weiß CSS kann da was machen...).
    Schön wäre es, wenn man bei der Bestätigung eine eigene Seite zur Verfügung stellen könnte bzw. nach Bestätigung des Abos nochmal eine Dankes-Mail einrichten könnte.

    Für den normalen Newsletter habe ich hierzu auch schon eine Anleitung gefunden.
    Meine Frage wäre nun, ist das für Avisota in dieser Form auch möglich, wenn ja - wie?

    Vielen lieben Dank schon einmal :-)

    Marie

    EDIT by tril: Eine Lauffähige Lösung ist hier zu finden: https://www.contao-community.de/show...l=1#post223409
    Zuletzt geändert von tril; 24.09.2012, 15:25.
  • tril
    Contao-Urgestein
    • 07.01.2010
    • 2939

    #2
    Eine eigene Bestätigungsseite gibt es zur Zeit nicht, das lässt sich aber einbauen.


    Zur Zeit ließe sich aber alles auch über die HOOKs umsetzen.

    config.php
    PHP-Code:
    <?php
    
    $GLOBALS['TL_HOOKS']['avisotaSubscribe'][] = array('MyClass', 'hookAvisotaSubscribe');
    $GLOBALS['TL_HOOKS']['avisotaActivateSubscribtion'][] = array('MyClass', 'hookAvisotaActivateSubscribtion');
    
    ?>
    MyClass.php
    PHP-Code:
    <?php
    
    class MyClass
    {
        function hookAvisotaSubscribe($arrRecipient, $arrTokens)
        {
            foreach ($_SESSION['avisota_subscription'] as $strMessage)
            {
                // break on error
                if (preg_match('#|error$#', $strMessage))
                {
                    return;
                }
            }
            // remove the messages, alternative show this messages on the confirmation page
            unset($_SESSION['avisota_subscription']);
            // everythink is allright, redirect to confirmation page
            $this->redirect($this->getPageDetails(X)->row()); // replace X with the page id of the confirmation page
        }
    
        function hookAvisotaActivateSubscribtion($id, $strEmail, $strToken)
        {
            // send a confirmation email to $strEmail
        }
    }
    
    ?>

    Kommentar

    • sepp_a_u
      Alter Contao-Hase
      • 10.04.2011
      • 1123

      #3
      füge ich den code von der "config.php" in die config.php des avisota modules ein? und wenn ja, ganz unten oder spielt es keine rolle wo?

      und wo finde ich denn die myClass.php? ist es dort dann ebenfalls egal wo ich den code reinbaue?

      viele grüsse und danke,
      david
      rote Plastikbecher & Beerpong Zubehör

      Kommentar

      • tril
        Contao-Urgestein
        • 07.01.2010
        • 2939

        #4
        Du musst ein eigenes Modul dafür erstellen, die Dateien kommen dann z.B. hierhin:
        system/modules/AvisotaCustom/config/config.php
        system/modules/AvisotaCustom/MyClass.php

        Kommentar

        • sepp_a_u
          Alter Contao-Hase
          • 10.04.2011
          • 1123

          #5
          eigenes modul erstellen oder einfach nur die von dir genannten ordner und dort dann die zwei dateien rein? oder wie genau meinst du das?
          rote Plastikbecher & Beerpong Zubehör

          Kommentar

          • tril
            Contao-Urgestein
            • 07.01.2010
            • 2939

            #6
            Zitat von tril Beitrag anzeigen
            system/modules/AvisotaCustom/config/config.php
            system/modules/AvisotaCustom/MyClass.php
            Da stehen doch die Dateipfade wo du die ablegen musst

            Kommentar

            • sepp_a_u
              Alter Contao-Hase
              • 10.04.2011
              • 1123

              #7
              habe jetzt die pfade erstellt und auch die dateien. die dateien natürlich noch etwas angepasst dass es "Unsubscribtion" heisst:

              config.php:
              Code:
              <?php
              
              $GLOBALS['TL_HOOKS']['avisotaUnsubscribe'][] = array('MyClass', 'hookAvisotaUnsubscribe');
              $GLOBALS['TL_HOOKS']['avisotaActivateUnsubscribtion'][] = array('MyClass', 'hookAvisotaActivateUnsubscribtion');
              
              ?>
              MyClass.php:
              Code:
              <?php
              
              class MyClass
              {
                  function hookAvisotaUnsubscribe($arrRecipient, $arrTokens)
                  {
                      foreach ($_SESSION['avisota_unsubscription'] as $strMessage)
                      {
                          // break on error
                          if (preg_match('#|error$#', $strMessage))
                          {
                              return;
                          }
                      }
                      // remove the messages, alternative show this messages on the confirmation page
                      unset($_SESSION['avisota_unsubscription']);
                      // everythink is allright, redirect to confirmation page
                      $this->redirect($this->getPageDetails(61)->row()); // replace X with the page id of the confirmation page
                  }
              
                  function hookAvisotaActivateUnsubscribtion($id, $strEmail, $strToken)
                  {
                      // send a confirmation email to $strEmail
                  }
              }
              
              ?>
              dennoch funktioniert es irgendwie nicht. es kommt sowohl im backend als auch im frontend im header folgende fehlermeldung.
              Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00ef2fd/system/modules/AvisotaCustom/config/config.php:6) in /www/htdocs/w00ef2fd/system/libraries/Template.php on line 285

              #0 /www/htdocs/w00ef2fd/system/libraries/Template.php(285): __error(2, 'Cannot modify h...', '/www/htdocs/w00...', 285, Array)
              #1 /www/htdocs/w00ef2fd/system/modules/frontend/FrontendTemplate.php(234): Template->output('Vary: User-Agen...', false)
              #2 /www/htdocs/w00ef2fd/system/modules/frontend/PageRegular.php(171): FrontendTemplate->output()
              #3 /www/htdocs/w00ef2fd/index.php(266): PageRegular->generate()
              #4 /www/htdocs/w00ef2fd/index.php(401): Index->run(Object(DB_Mysql_Result))
              #5 {main}


              Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00ef2fd/system/modules/AvisotaCustom/config/config.php:6) in /www/htdocs/w00ef2fd/system/libraries/Template.php on line 286

              #0 /www/htdocs/w00ef2fd/system/libraries/Template.php(286): __error(2, 'Cannot modify h...', '/www/htdocs/w00...', 286, Array)
              #1 /www/htdocs/w00ef2fd/system/modules/frontend/FrontendTemplate.php(234): Template->output('Content-Type: t...')
              #2 /www/htdocs/w00ef2fd/system/modules/frontend/PageRegular.php(171): FrontendTemplate->output()
              #3 /www/htdocs/w00ef2fd/index.php(266): PageRegular->generate()
              #4 /www/htdocs/w00ef2fd/index.php(401): Index->run(Object(DB_Mysql_Result))
              #5 {main}
              was mache ich falsch bzw. ist falsch?
              rote Plastikbecher & Beerpong Zubehör

              Kommentar

              • tril
                Contao-Urgestein
                • 07.01.2010
                • 2939

                #8
                Klingt schwer danach, als ob du eine Leerzeile/Leerzeichen am Ende deiner PHP Datei, nach dem schließenden ?> Tag hast. Irgendwo wird halt eine Ausgabe erzeugt, die zu dem Fehler führt.

                Kommentar

                • sepp_a_u
                  Alter Contao-Hase
                  • 10.04.2011
                  • 1123

                  #9
                  An dem Lag es wohl. Jetzt aber die Frage:
                  wie wird verwende ich das ganze? Also dass die Bestätigungsseite für die Unsubscription angezeigt wird? muss ich das irgendwie noch einstellen?

                  Grüsse und danke,
                  David
                  rote Plastikbecher & Beerpong Zubehör

                  Kommentar

                  • tril
                    Contao-Urgestein
                    • 07.01.2010
                    • 2939

                    #10
                    Wenn du den Hook in der config.php registriert hast, dann ist der aktiv.

                    Kommentar

                    • sepp_a_u
                      Alter Contao-Hase
                      • 10.04.2011
                      • 1123

                      #11
                      was meinst du mit registriert? habe einfach die zwei dateien von oben angelegt, hochgeladen und sonst nichts reicht das dann schon oder muss ich noch weitere schritte machen, um den "hook zu registrieren"? Ich kenne mich damit halt leider nicht aus...
                      rote Plastikbecher & Beerpong Zubehör

                      Kommentar

                      • tril
                        Contao-Urgestein
                        • 07.01.2010
                        • 2939

                        #12
                        Das da reicht aus ->
                        PHP-Code:
                        $GLOBALS['TL_HOOKS']['avisotaUnsubscribe'][] = array('MyClass', 'hookAvisotaUnsubscribe');
                        $GLOBALS['TL_HOOKS']['avisotaActivateUnsubscribtion'][] = array('MyClass', 'hookAvisotaActivateUnsubscribtion'); 
                        

                        Kommentar

                        • sepp_a_u
                          Alter Contao-Hase
                          • 10.04.2011
                          • 1123

                          #13
                          Zitat von tril Beitrag anzeigen
                          Das da reicht aus ->
                          PHP-Code:
                          $GLOBALS['TL_HOOKS']['avisotaUnsubscribe'][] = array('MyClass', 'hookAvisotaUnsubscribe');
                          $GLOBALS['TL_HOOKS']['avisotaActivateUnsubscribtion'][] = array('MyClass', 'hookAvisotaActivateUnsubscribtion'); 
                          
                          du meinst also den code von dir in die datei
                          system/config/config.php
                          eintragen, oder?
                          Wenn ich das getan habe, wie kann ich dann die weiterleitungsseite für abmelden festlegen?
                          rote Plastikbecher & Beerpong Zubehör

                          Kommentar

                          • tril
                            Contao-Urgestein
                            • 07.01.2010
                            • 2939

                            #14
                            Also system/config/config.php ist schon mal völlig falsch.

                            Die richtigen Pfade stehen bereits hier:


                            Und was du dort rein zu schreiben hast steht hier (in dem Code kannst du auch die Weiterleitungsseite festlegen):

                            Kommentar

                            • sepp_a_u
                              Alter Contao-Hase
                              • 10.04.2011
                              • 1123

                              #15
                              Hmm...also ich fasse jetzt nochmal zusammen was ich bisher getan habe, weil ich irgendwie nicht ganz schlau aus dem ganzen wirr-warr werde, sorry.
                              1. Modul "Abonnement verwalten" angelegt mit einer Weiterleitungsseite ("Newsletter abonniert")
                              2. Die o.g. Dateien erstellt:
                                config.php:
                                Code:
                                <?php
                                
                                $GLOBALS['TL_HOOKS']['avisotaUnsubscribe'][] = array('MyClass', 'hookAvisotaUnsubscribe');
                                $GLOBALS['TL_HOOKS']['avisotaActivateUnsubscribtion'][] = array('MyClass', 'hookAvisotaActivateUnsubscribtion');
                                
                                ?>
                                und MyClass.php:
                                Code:
                                <?php
                                
                                class MyClass
                                {
                                    function hookAvisotaUnsubscribe($arrRecipient, $arrTokens)
                                    {
                                        foreach ($_SESSION['avisota_unsubscription'] as $strMessage)
                                        {
                                            // break on error
                                            if (preg_match('#|error$#', $strMessage))
                                            {
                                                return;
                                            }
                                        }
                                        // remove the messages, alternative show this messages on the confirmation page
                                        unset($_SESSION['avisota_unsubscription']);
                                        // everythink is allright, redirect to confirmation page
                                        $this->redirect($this->getPageDetails(61)->row()); // replace X with the page id of the confirmation page
                                    }
                                
                                    function hookAvisotaActivateUnsubscribtion($id, $strEmail, $strToken)
                                    {
                                        // send a confirmation email to $strEmail
                                    }
                                }
                                
                                ?>
                                Die Seite "newsletter gekündigt" hat die ID 61 und dort soll der User dann weitergeleitet werden, wenn er sich über das Modul aus Pkt. 1 vom Newsletter abmeldet.
                              3. Die zwei Dateien von Punkt 2 wie folgt hochgeladen: system/modules/AvisotaCustom/ für die MyClass.php und system/modules/AvisotaCustom/config/ für die config.php


                              Jetzt ist die Frage, was ich noch machen muss, damit der User richtig weitergeleitet wird, wenn er auf den Button "Kündigen" klickt von dem Modul aus Punkt 1. Bisher wird er weiterhin auf die weiterleitungsseite des Modul geschickt.

                              Viele Grüsse,
                              David
                              rote Plastikbecher & Beerpong Zubehör

                              Kommentar

                              Lädt...