Für ein Projekt habe ich die Newsletteranmeldung mit Formhandler, wie im Türchen 14 Tutorial beschrieben, verwendet. Natürlich war auch eine Newsletterabmeldung notwendig, die ich auch, basierend auf Formhandler, umgesetzt habe.
Ablauf der Abmeldung
Im Formular ist nur die E-Mail Adresse anzugeben, die aus dem Newsletterverteiler entfernt werden soll. Nach dem Absenden wird die eingetragenen E-Mail Adresse zunächst validiert (Tx_Formhandler_Validator_Default (gültige E-Mail Adresse und ob sie in der Tabelle tt_address existiert)) und bei Erfolg wird in der Tabelle tt_address für den existierenden Datensatz, basierend auf der angegebenen E-Mail Adresse, das Feld hidden auf 1 gesetzt (Finisher_DB).
Alle weiteren Schritte, wie versenden von E-Mails an User und Admin, habe ich in diesem Tutorial weggelassen, da sie genau wie im Tutorial Newsletteranmeldung, umgesetzt werden können.
plugin.Tx_Formhandler.settings.predef.newsletter { # Common configuration name = Newsletterabmeldung addErrorAnchors = 1 templateFile = fileadmin/templates/formhandler/newsletter_unsubscribe.html langFile.1 = fileadmin/templates/formhandler/newsletter_unsubscribe.xml cssFile.1 = fileadmin/css/my.css formValuesPrefix = formhandler requiredSign = TEXT requiredSign.value = * requiredSign.wrap = <span style="color: #DF9707;">|</span> #isErrorMarker.default = class="errorField" isErrorMarker.default = # HTML wrapping by validation error errorListTemplate { totalWrap = <div class="error">|</div> singleWrap = | } #PreProcessors preProcessors { 1.class = PreProcessor_LoadGetPost } # Validators configuration validators { 1 { class = Tx_Formhandler_Validator_Default config { fieldConf { emailunsubscribe { errorCheck.1 = required errorCheck.2 = email errorCheck.3 = isInDBTable errorCheck.3 { table = tt_address field = email fields { email.mapping = emailunsubscribe } } } } } } } # Finishers configuration finishers { 1.class = Finisher_DB 1.config { debug = 1 table = tt_address updateInsteadOfInsert = 1 key = email key_value = TEXT key_value.data = GPvar:formhandler|emailunsubscribe fields { hidden.ifIsEmpty = 1 email.mapping = emailunsubscribe } } 2.class = Finisher_Redirect 2.config { redirectPage = 97 } } } |
<!-- ###TEMPLATE_FORM1### begin --> <div id="formhandler_newsletter_unsubscribe_form"> <form method="post" action="###REL_URL###"> <table> <tr> <td>###LLL:newsletter_intro_unsubscribe###</td> </tr> <tr> <td> <table> <tr> <td class="newsletterlabel">###LLL:emailunsubscribe### ###required_emailunsubscribe###</td> <td><input type="text" ###is_error_emailunsubscribe### name="formhandler[emailunsubscribe]" id="emailunsubscribe" value="###value_emailunsubscribe###" size="30" class="newsletterinput"/></td> </tr> </table> </td> <tr> <td class="newslettertext">###LLL:required_fields###</td> </tr> <tr> <td class="newslettertext">###LLL:newsletter_text_1###</td> </tr> <tr> <td> </td> </tr> <tr> <td><input type="submit" value="###LLL:submit###" ###submit_nextStep###/></td> </tr> <tr> <td>###ERROR###</td> </tr> </table> </form> </div> <!-- ###TEMPLATE_FORM1### end --> <!-- ###TEMPLATE_SUBMITTEDOK### begin --> <table> <tr> <td>###LLL:emailunsubscribe###</td> <td>###value_emailunsubsrcibe###</td> </tr> </table> <!-- ###TEMPLATE_SUBMITTEDOK### end --> |
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3locallang> <data type="array"> <languageKey index="default" type="array"> <label index="emailunsubscribe">E-Mail</label> <label index="required_fields">* Pflichtfelder</label> <label index="newsletter_text_1">Die Daten werden nicht an Dritte weitergegeben.</label> <label index="submit">Formular senden</label> <label index="error_emailunsubscribe_required">Gültige E-Mail Adresse bitte eingeben.</label> <label index="error_emailunsubscribe_email">Gültige E-Mail Adresse bitte eingeben.</label> <label index="error_emailunsubscribe_isInDBTable">Diese E-Mail Adresse ist nicht registriert.</label> </languageKey> </data> </T3locallang> |
Dies ist ein Gast-Beitrag von Alois Rainbacher. Vielen Dank dafür.