Formhandler mit Newsletter-Anmeldung und Opt-In (formhandler, direct_mail, direct_mail_subscription)

20. April 2012

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