Hier eine Schritt-für-Schritt Anleitung, wie man ein Typo3-Kontaktformular mit Formhandler um eine Checkbox “Newsletter bestellen” erweitern kann, die über die direct_mail-Extension und direct_mail_subscription-Extension das Double-Opt-In übernimmt.
1. Extensions installieren und konfigurieren
Es werden folgende Extensions benötigt: direct_mail, direct_mail_subscription und formhandler und tt_address. Die folgende Beschreibung setzt voraus, dass diese Extensions installiert und korrekt konfiguriert wurden.
Das Mindest-TS-Setup für direct_mail_subscription sollte sein:
plugin.feadmin.dmailsubscription { # SysFolder, in dem die tt_address-Einträge gespeichert werden pid = 144 email { from = deine@email.de fromName = Direct Mail Subscription admin = deine@email.de } }
2. Formhandler-Template anpassen
Eine Checkbox mit der Variable “newsletter” ins E-Mail-Formular einbauen:
<input type="checkbox" name="formhandler[newsletter]" value="1" id="newsletter" ###checked_newsletter_1###/> Ich möchte den Newsletter erhalten
3. Finisher für Formhandler erstellen
Eine PHP-Datei mit dem Namen “Tx_Formhandler_direct_mail_subscription.php” im Filesystem anlegen, hier z.B. unter “fileadmin/scripts/Tx_Formhandler_direct_mail_subscription.php”
<?php class Tx_Formhandler_direct_mail_subscription extends Tx_Formhandler_AbstractFinisher { public function process () { $gp = $this->gp; $settings = $this->settings; if (!$gp['newsletter']) return $gp; require_once("typo3/sysext/cms/tslib/media/scripts/fe_adminLib.inc"); require_once(t3lib_extMgm::extPath('direct_mail_subscription').'pi/class.dmailsubscribe.php'); $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['feadmin.']['dmailsubscription.']; if ($settings['optInPID']) { $conf['formurl.'] = array('parameter'=>$settings['optInPID']); } $_POST['FE']['tt_address']['name'] = $gp['name']; $_POST['FE']['tt_address']['email'] = $gp['email']; $_POST['FE']['tt_address']['module_sys_dmail_html'] = 1; $feadmin = new user_feAdmin(); $feadmin->cObj = t3lib_div::makeInstance('tslib_cObj'); $status = $feadmin->init('',$conf); return $gp; } } ?>
4. TS-Setup für Formhandler anpassen
Folgende Anpassung für das TypoScript-Setup von Formhandler machen, damit der Finisher eingebunden wird. Als optInPID sollte die Seite angegeben werden, auf die der Opt-In-Link in der E-Mail führen soll. Hier macht es Sinn, das direct_mail_subscription-PlugIn als Inhaltselement zu platzieren, damit die Nachricht “Vielen Dank, Sie wurden erfolgreich registriert” etc. erscheinen.
# Pfad zu dem ORDNER, in dem sich die Klassen befinden! plugin.Tx_Formhandler.settings.additionalIncludePaths.1 = fileadmin/extensions/formhandler_eswe/ plugin.Tx_Formhandler.settings.predef.formular { # ... hier stehen die üblichen Konfigurationen ... # Entscheidend ist dann das hier: finishers { 1.class = Tx_Formhandler_direct_mail_subscription 1.config { # Hier die PID angeben, die nach dem Klick auf den Opt-In-Link geöffnet werden soll optInPID = 100 } } }
Links und Dankeschöns
Eigener Finischer Beispiel von Dirk
Formhandler Dokumentation
Formhandler Offizielle Webseite
Mediavrog Beispiel